Neo4j / Cypher检查链表中每个节点的现有关系

时间:2013-07-08 05:22:16

标签: neo4j cypher

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

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<-[like?:LIKES]-user是必需的。

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

编辑:

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

1 个答案:

答案 0 :(得分:1)

使用WITH语法与RETURN类似。它明确地分隔查询部分,允许您声明哪些标识符可以转移到下一部分..

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

另外,您可以创建图表here的示例,以便我们提供帮助..