count(nodes(p)) 如何在 Cypher、Neo4j 中工作
How does count(nodes(p)) work in Cypher, Neo4j
我正在寻找有关其工作原理的解释以及为什么 return 路径中的节点数没有。假设我匹配了一条路径 p。现在:
WITH p, count(nodes(p)) AS L1 RETURN L1
returns 1.
清楚后,如何正确计算路径节点数?
count()
是一个 聚合函数 。使用任何聚合函数时,结果行将根据 RETURN 子句中包含的任何内容进行分组,并且 不是 聚合函数。在这种情况下,结果行将按 p
分组,并且 return 值将是 count(nodes(p)).
nodes(p)
returns 一个节点数组,所以count(nodes(p))
将return数组的计数并且永远等于 1
.
为了 return 你应该使用路径中的节点数量 size(nodes(p))
。
如果您只对路径的长度感兴趣,而不是特别关注路径中包含的节点,我会鼓励您使用length(p)
.这将 return 给定路径的 rels 长度,而不必 manipulate/access 节点。
我正在寻找有关其工作原理的解释以及为什么 return 路径中的节点数没有。假设我匹配了一条路径 p。现在:
WITH p, count(nodes(p)) AS L1 RETURN L1
returns 1.
清楚后,如何正确计算路径节点数?
count()
是一个 聚合函数 。使用任何聚合函数时,结果行将根据 RETURN 子句中包含的任何内容进行分组,并且 不是 聚合函数。在这种情况下,结果行将按 p
分组,并且 return 值将是 count(nodes(p)).
nodes(p)
returns 一个节点数组,所以count(nodes(p))
将return数组的计数并且永远等于 1
.
为了 return 你应该使用路径中的节点数量 size(nodes(p))
。
如果您只对路径的长度感兴趣,而不是特别关注路径中包含的节点,我会鼓励您使用length(p)
.这将 return 给定路径的 rels 长度,而不必 manipulate/access 节点。