我有一个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
然后检查每个可选关系来完成此操作。这会导致任何性能问题吗?如果是这样,有更好的方法吗?
答案 0 :(得分:1)
使用WITH
语法与RETURN类似。它明确地分隔查询部分,允许您声明哪些标识符可以转移到下一部分..
我在许多情况下都使用它而且我没有注意到任何性能问题..
另外,您可以创建图表here的示例,以便我们提供帮助..