首页 > 解决方案 > Neo4j 与节点列表的计数和顺序关系

问题描述

我有一张人和物品的图表。关系是一对多的(a:Person)-[:has]->(b:Item)。对于输入的项目列表,我试图获取拥有该项目的人员列表,按列表中拥有最多项目的人排序。

在此处输入图像描述

在上图中,我希望输出如下:

[{"Person 1", count: 3},{"Person 2", count: 2},{"Person 3", count: 1}]

我尝试了以下几种变体:

match(a:Person) match(b:Item) where b.label in ["Item 1", "Item 2", "Item 3"] return a,count( (a)-[:has]->(b))

match(n:Item) return n, size((n)-->()) as count计数是正确的,但是当我尝试将项目缩小到列表时,计数是错误的。

标签: neo4jcypher

解决方案


也许是这样的:

MATCH (a:Person)-[:has]->(b:Item)
RETURN a, count(b) ORDER by count(b) DESC

推荐阅读