按关系计数排序

时间:2013-09-13 05:33:36

标签: neo4j cypher

我的图表看起来像这样:

User->Friend->Area 
|             (Which area does this friend live in)
------------->Area<-Friend<-Other users
              (Which area does this user live in)

如果我想找到我没有朋友的所有区域,我会这样做

start user=node(reference)
match user-->friend-->area<-[r?:HAVE_A]-friend<--user
where r is null
return area

效果很好!

但是如何订购结果让我得到用户最多的区域?

1 个答案:

答案 0 :(得分:2)

如果我正确理解您的问题,您将获得正确的返回区域,但希望按用户数量对其进行整理。

在这种情况下,您需要WITH子句来吸引用户,COUNT他们以及ORDER BY对他们进行排序:

START user=node(reference)
MATCH user-->friend-->area<-[r?:HAVE_A]-friend<--user
WHERE r is null
WITH area 
MATCH area<--users
RETURN area, COUNT(users) as cnt
ORDER BY cnt DESC