Neo4j:获取多个节点/关系属性的最小值/最大值

时间:2020-06-08 04:09:42

标签: neo4j cypher

如何找到多个节点/关系属性的最小值/最大值?

我准备了以下图形:activeTab documentation

基本上是(U:User)-[i:invests]->(P:Project)。

1)我具有以下属性:amount:1000

2)U具有以下属性:availableAmount:500

我需要较小的值1)i的属性和2)U的属性

1 个答案:

答案 0 :(得分:1)

为此,您需要一个缩放器函数,从Cypher获得的min()max()函数是跨行工作的聚合函数,这在这里不是您所需要的。

如果您安装了APOC Procedures,则可以使用apoc.coll.min()apoc.coll.max()来遍历列表的各个元素:

MATCH (U:User)-[i:invests]->(P:Project)
RETURN U, apoc.coll.min([i.amount, P.availableAmount]) as minValue

如果您没有APOC或不允许使用它,则可以使用CASE结构查找最小值:

MATCH (U:User)-[i:invests]->(P:Project)
RETURN U, CASE WHEN i.amount < P.availableAmount THEN i.amount ELSE P.availableAmount END as minValue