如何构建 Neo4j Cypher 查询来查找仅链接到受限节点列表的节点?
How do I construct a Neo4j Cypher query that looks for nodes that have only links to a restricted list of nodes?
我需要构建一个 Cypher 查询来查找具有 link 到其他节点的特定子集的节点。即,它将具有任何 link 的节点排除到规定列表之外的节点。例如,考虑以下 nodes/edges:
(a)->(d)
(a)->(e)
(a)->(f)
(b)->(d)
(b)->(e)
(c)->(d)
我如何进行查询,例如,returns 任何具有 link 到 (d) and/or (e) 但没有其他节点的节点?即,(a) 将被排除在结果之外,因为它也 links 到 (f),但 (b) 和 (c) 将包含在结果中。
您可以将候选节点的邻居列表与子集中的节点列表进行比较。对于您的情况,所有邻居都应该在子集中。 (f) 不是
WITH [d,e] AS subset
MATCH (n)
WHERE ALL(neighbour IN [(n)-->(m) | m] WHERE neighbour IN subset)
RETURN n
我需要构建一个 Cypher 查询来查找具有 link 到其他节点的特定子集的节点。即,它将具有任何 link 的节点排除到规定列表之外的节点。例如,考虑以下 nodes/edges:
(a)->(d)
(a)->(e)
(a)->(f)
(b)->(d)
(b)->(e)
(c)->(d)
我如何进行查询,例如,returns 任何具有 link 到 (d) and/or (e) 但没有其他节点的节点?即,(a) 将被排除在结果之外,因为它也 links 到 (f),但 (b) 和 (c) 将包含在结果中。
您可以将候选节点的邻居列表与子集中的节点列表进行比较。对于您的情况,所有邻居都应该在子集中。 (f) 不是
WITH [d,e] AS subset
MATCH (n)
WHERE ALL(neighbour IN [(n)-->(m) | m] WHERE neighbour IN subset)
RETURN n