【问题标题】:Neo4j/Cypher Check for existing relationship on each node in linked listNeo4j/Cypher 检查链表中每个节点的现有关系
【发布时间】:2013-07-08 15:54:35
【问题描述】:

我有一个密码,它返回由给定用户创建的项目列表(工作正常):

MATCH (author:User)-[:ITEM_LIST*1..10]->item
WHERE author.username='1'
RETURN item

我现在想要的是返回一个创作项目的列表,但还要知道特定用户是否喜欢这些项目中的任何一个。我已经尝试了下面的密码,但它不起作用:

START user=node(1)
MATCH (author:User)-[:ITEM_LIST*1..10]->item<-[like?:LIKES]-user
WHERE author.username='1'
RETURN item, (like IS NOT NULL) as likes

我将上面的密码阅读为返回所有项目,以及项目和给定用户之间的任何喜欢(如果它们存在)。不幸的是,? 对结果没有影响,而且似乎item&lt;-[like?:LIKES]-user 是一个要求。

我需要做什么才能达到预期的效果?

编辑:

我意识到我可以通过使用WITH item 然后检查每个可选关系来做到这一点。这会导致任何性能问题吗?如果是这样,有没有更好的方法?

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    使用WITH 语法类似于RETURN。它显式地分隔查询部分,允许您声明将哪些标识符传递到下一部分..

    我在很多情况下都在使用它,我没有注意到任何性能问题..

    另外,您可以创建图表样本here,以便我们提供帮助..

    【讨论】:

      猜你喜欢
      • 2014-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多