【发布时间】:2020-02-21 17:39:15
【问题描述】:
我很难理解如何在 Cypher 中正确使用聚合函数。
假设我有标记为Animal 的节点,属性为size 和species。
对于每个物种,我都想得到最大的。
到目前为止,我知道我可以通过以下方式做到这一点:
MATCH (n:Animal)
WITH n.species as species, max(n.size) as size
RETURN species, size
我将有效地获得相应物种的最大尺寸。
但是我怎样才能得到节点而不是物种呢?
由于WITH 语句,我无法返回n,也无法将其注入WITH,因为它会破坏species 聚合。
我知道这个问题已经被问过几次了,但我遇到的不同解决方案是针对特定案例和使用关系的
非常欢迎任何建议
编辑:我终于让它工作了:
MATCH (n:Animal)
WITH n.species as species, max(n.size) as size, collect(n) as ns
UNWIND ns as n
WITH n
WHERE n.size = size
RETURN n
这是解决问题的 Cypher 方式吗?对我来说似乎有点冗长而且效率不高(所有节点都在这里获取),没有更直接的选择吗?
【问题讨论】: