首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在neo4j中执行嵌套查询

如何在neo4j中执行嵌套查询
EN

Stack Overflow用户
提问于 2015-10-19 11:25:56
回答 1查看 399关注 0票数 2

无法在neo4j中找到好的方法,所以请帮助我。

我有三种类型的对象:人,对象,观点。我想要一份最新意见的清单,有意见的人,对象。我能做到,这并不难。当我想在同一个查询中获得对相同对象有意见的人时,我的问题就开始了。

这就是我希望得到的结果:

  1. 人物: Berit,Object: Berit,见解: good
    • 人物:阿恩,对象:赛义德,意见:好
    • 人物:艾伯特,反对:评论,意见:不好

  1. 个人:阿克塞尔,烹饪书,棒极了的
    • 个人:阿恩,对象:食谱,意见:不必要
    • 人物: Tove,Object:烹饪书,意见:不好
    • 人物: Berit,反对:烹饪书,意见:不好

..。诸若此类

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-19 12:33:18

你不描述你的关系类型,所以我会编出来的。以下是您可能开始的方式:

代码语言:javascript
复制
MATCH (target:Person)-[:HAS_OPINION]->(target_opinion:Opinion)-[:ON]->(object:Object)<-[:ON]-(other_opinion:Opinion)<-[:HAS_OPINION]-(other_person:Person)
WHERE target.id = {target_id}

目标可能是基于id/name/任何.

您可以通过几种方式返回数据。这可能是一个非正规化的结果:

代码语言:javascript
复制
MATCH (target:Person)-[:HAS_OPINION]->(target_opinion:Opinion)-[:ON]->(object:Object)<-[:ON]-(other_opinion:Opinion)<-[:HAS_OPINION]-(other_person:Person)
WHERE target.id = {target_id}
RETURN target, target_opinion, object, other_opinion, other_person

或者,您可以每行返回一个目标,并将所有其他目标收集到一个对象数组中:

代码语言:javascript
复制
MATCH (target:Person)-[:HAS_OPINION]->(target_opinion:Opinion)-[:ON]->(object:Object)<-[:ON]-(other_opinion:Opinion)<-[:HAS_OPINION]-(other_person:Person)
WHERE target.id = {target_id}
RETURN
  target,
  target_opinion,
  object,
  collect({opinion: other_opinion, person: other_person}) AS others
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33213191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档