给定具有数字属性x的节点。 是否可以使用cypher在x中找到间隙?
{i1:Item {num:1}}
{i2:Item {num:2}}
{i3:Item {num:4}}
{i4:Item {num:5}}
{i5:Item {num:6}}
{i6:Item {num:10}}
在上述情况下,我们可以返回差距的开头和结尾或其他任何有用的东西:)
答案 0 :(得分:1)
假设您有按照指定顺序连接Item节点的关系,您可以使用这样的查询来查找任何"间隙"两个Item节点之间的差异超过1:
MATCH (i1:Item)-[:NEXT]->(i2:Item)
WHERE i2.num-i1.num > 1
RETURN i1,i2
Here是一个Neo4j控制台,展示了这一点。
修改强>
在不使用Item节点之间的关系的情况下,您只需先查找Item节点的集合,然后再查找超过1的间隙:
MATCH (i:Item) WITH i ORDER BY i.num ASC WITH collect(i) AS items
UNWIND range(0,size(items)-2) AS idx
WITH items[idx] AS i1, items[idx+1] AS i2 WHERE i2.num - i1.num > 1
RETURN i1, i2