我想得到那些只指向自身并且与其他节点没有关系的节点(只指向自身):
MATCH (z:zone) WHERE NOT (z)-[:CONNECTS]->(:zone) RETURN z
结果应该包括纽瓦克Airport和Baisley Park,因为我们可以看到这两个节点仍然具有关系,但与其他节点隔离。
ars1skjm1#
下面的查询非常高效,因为它利用了getDegree operation,它不需要任何数据库命中。您可以profile查询来验证这一点。
MATCH (z:zone)-[:CONNECTS]->(z) WHERE SIZE([(z)-[:CONNECTS]->()|1]) = 1 RETURN z
注1:为了使用getDegree,SIZE()函数中的模式解析必须是非特定的,这就是为什么在上面的一端使用()。注2:Neo4j 5不支持旧的语法SIZE((z)-[:CONNECTS]->()),因此这个答案在SIZE()函数中使用了更麻烦的模式理解。好消息是Cypher查询计划器仍然可以计算出它可以使用新语法的getDegree。
getDegree
SIZE()
()
SIZE((z)-[:CONNECTS]->())
1条答案
按热度按时间ars1skjm1#
下面的查询非常高效,因为它利用了getDegree operation,它不需要任何数据库命中。您可以profile查询来验证这一点。
注1:为了使用
getDegree
,SIZE()
函数中的模式解析必须是非特定的,这就是为什么在上面的一端使用()
。注2:Neo4j 5不支持旧的语法
SIZE((z)-[:CONNECTS]->())
,因此这个答案在SIZE()
函数中使用了更麻烦的模式理解。好消息是Cypher查询计划器仍然可以计算出它可以使用新语法的getDegree
。