count(nodes(p))如何在Cypher,Neo4j中工作

wik*_*239 5 neo4j cypher

我正在寻找一个如何工作的解释,以及为什么不返回路径中的节点数.假设我匹配路径p.现在:

WITH p, count(nodes(p)) AS L1 RETURN L1
Run Code Online (Sandbox Code Playgroud)

返回1.

如果清楚,我该如何正确计算路径节点?

alb*_*omo 6

count()是一个聚合函数.使用任何聚合函数时,结果行将按RETURN子句中包含的内容进行分组,而不是聚合函数.在这种情况下,结果行将按分组,p返回值将为count(节点(p)).

nodes(p)返回一个节点数组,因此count(nodes(p))将返回数组的数量并始终相等1.

为了返回您应该使用的路径中的节点数量size(nodes(p)).

如果您只是对路径的长度感兴趣而不是特别对其中包含的节点感兴趣,我建议您使用length(p).这将返回给定路径的rels长度,而不必操纵/访问节点.