1

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

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然后检查每个可选关系来做到这一点。这会导致任何性能问题吗?如果是这样,有没有更好的方法?

4

1 回答 1

1

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

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

此外,您可以在此处创建图表样本,以便我们提供帮助。

于 2013-07-08T07:54:35.067 回答