如何获取neo4j中排除节点的数量

时间:2017-01-09 07:08:33

标签: neo4j cypher

我有这样的节点。 enter image description here

我想获得未映射到节点(l1)的所有节点(从c1到c5),因此我的结果节点应该是(c2),(c4)和(c5)。如何在Neo4j中查询。

2 个答案:

答案 0 :(得分:0)

您需要选择那些没有到达所需节点的单向路径的节点:

MATCH (E {name: 'l1'}) WITH E
MATCH (M) WHERE NOT (M)-[*]->(E)
RETURN M

答案 1 :(得分:0)

一个天真的解决方案是(C,L是节点标签R1是关系类型)

MATCH (c:C)
WHERE NOT((c)-[:R1]->(l:L {...})
RETURN c

其中(l:L {...})是用于标识节点l1的过滤器。

如果C节点中存在大量关系变得缓慢。您可以尝试以下方法:

MATCH (l:L {...})<-[:R1]-(c:C)
WITH COLLECT(c) AS cs
MATCH (c2:C)
WHERE NOT c2 NOT cs
RETURN c2

您应该根据您的数据在两者之间进行选择。