我不知道是什么的限制是收藏,但我可以很容易地创建100,000 return range (1,100000) as largeCollection
。
然而,一个更好的方式来获得这些节点是集合放松入行,然后用这些密钥匹配的节点上:
// better to parameterize this, when you get the chance
WITH [1505697,2406945,2408297,2408531,2410815,2413566,2415224] as equipKeys
MATCH (n:person{key:2529962, ownBy:0})
UNWIND equipKeys as equipKey
MATCH (c:Equipment{key:equipKey})
MATCH path = (n)<-[:relation]-(c)
RETURN distinct EXTRACT (p in NODES(path)| p.key);
编辑
从您的评论,看来你只想返回设备密钥,其中:设备节点具有指向您的个人节点的路径。
您正在使用的MATCH将查找所有可能的路径,这些路径会在大中型图表上窒息,特别是在许多关系中。
您可能想要使用EXISTS()函数,如果存在这样的路径,它将返回true或false。也就是说,你可能想考虑通过给出可能的上限来限制路径。
WITH [1505697,2406945,2408297,2408531,2410815,2413566,2415224] as equipKeys
MATCH (n:person{key:2529962, ownBy:0})
UNWIND equipKeys as equipKey
MATCH (c:Equipment{key:equipKey})
WITH DISTINCT n, c
WHERE EXISTS((n)<-[:relation*0..10]-(c))
RETURN c.key
感谢它帮助。 – Navneet
在我的使用情况下,我希望结果作为键存在于第n层的路径中,所以使用上面我的查询将是: “WITH [1505697,2406945,2408297,2408531,2410815,2413566,2415224] as装备键 MATCH(n:人{key:2529962,ownBy:0}) UNWIND equipKe as equipKey MATCH(c:Equipment {key:equipKey}) MATCH path =(n)< - [:relation * 0 .. ] - (c) RETURN distinct c.key“ 但是,如果节点具有大量关系,则此查询花费时间。你能否建议任何更好的方法来实现相同的目标。 谢谢 – Navneet