Database 查找没有特定关系的节点(Cypher/neo4j)
我有一个neo4j db,具有以下功能:Database 查找没有特定关系的节点(Cypher/neo4j),database,neo4j,cypher,Database,Neo4j,Cypher,我有一个neo4j db,具有以下功能: a:Foo b:Bar 大约10%的db具有(a)-[:has]->(b) 我只需要得到没有这种关系的节点 以前做()-[r?]-()会很完美!然而,它不再被支持:(相反,按照他们的建议去做) OPTIONAL MATCH (a:Foo)-[r:has]->(b:Bar) WHERE b is NULL RETURN a 给我一个空结果,因为可选匹配需要两个节点都在那里或两个节点都不在那里 那么如何获取所有未连接到b:Bar的a:Foo节点呢
a:Foo
b:Bar
大约10%的db具有(a)-[:has]->(b)
我只需要得到没有这种关系的节点
以前做()-[r?]-()
会很完美!然而,它不再被支持:(相反,按照他们的建议去做)
OPTIONAL MATCH (a:Foo)-[r:has]->(b:Bar) WHERE b is NULL RETURN a
给我一个空结果,因为可选匹配需要两个节点都在那里或两个节点都不在那里
那么如何获取所有未连接到b:Bar
的a:Foo
节点呢
注意:数据集有数百万个节点,因此查询需要高效,否则将超时。这将是
MATCH (a:Foo) WHERE not ((a)-[:has]->(:Bar)) RETURN a;
如果您正在查找所有单身/孤儿,这也适用:
MATCH (a:Foo) WHERE not ((a)--()) RETURN a;
天哪…就是这样!我一直试图把标签放在比赛的右边。它没有任何性能问题吗?它似乎需要所有节点