我有一组(n)值,它们在我的图中都有相应的节点。我从彼此的未知关系开始。 (参见蓝色的起始节点)
我想尽可能简单地找到,如果任何值/节点是任何其他值的子节点,那么应用这些规则来过滤结果:
答案 0 :(得分:1)
让我们假设您有一个输入参数nids
- 节点的id
属性的值集,目标节点具有标签Node
,节点之间的关系属于hasChild
类型。
然后你需要找到与输入集相对应的节点,并且没有来自与输入集相对应的节点的父节点:
UNWIND {nids} as nid
MATCH (N:Node {id: nid})
OPTIONAL MATCH (N:Node {id: nid})<-[:hasChild]-(P:Node) WHERE P.id IN {nids}
WITH N, collect(P) AS ts WHERE size(ts) = 0
RETURN N
不要忘记为节点的id
属性添加索引:
CREATE INDEX ON :Node(id)