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

如何获取neo4j中排除的节点数,neo4j,cypher,Neo4j,Cypher,我有这样的节点。 我想得到所有没有映射到节点(l1)的节点(从c1到c5),所以我的结果节点应该是(c2)、(c4)和(c5)。如何在Neo4j中进行查询。您需要选择那些没有指向所需节点的单向路径的节点: MATCH (E {name: 'l1'}) WITH E MATCH (M) WHERE NOT (M)-[*]->(E) RETURN M 一个简单的解决方案是(C、L是节点标签,R1是关系类型) 其中(l:l{…})是用于标识节点l1的一些过滤器 如果有大量的关系从C节点出来,

我有这样的节点。


我想得到所有没有映射到节点(l1)的节点(从c1到c5),所以我的结果节点应该是(c2)、(c4)和(c5)。如何在Neo4j中进行查询。

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

MATCH (E {name: 'l1'}) WITH E
MATCH (M) WHERE NOT (M)-[*]->(E)
RETURN M
一个简单的解决方案是(C、L是节点标签,R1是关系类型)

其中
(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

MATCH(l:l{…})c节点是否都具有相同的标签?如果是这样的话,您是在寻找该标签中未链接到l1的所有节点,还是仅此特定子集?此外,您是否可以提供数据的文本表示?从图形中,看起来可能有2个“l1”节点。也不清楚您在最右边的节点中写了什么。
MATCH (l:L {...})<-[:R1]-(c:C)
WITH COLLECT(c) AS cs
MATCH (c2:C)
WHERE NOT c2 NOT cs
RETURN c2