如何使用一个查询返回多个关系类型的计数?

时间:2013-08-13 21:40:34

标签: neo4j cypher

我需要根据关系获取节点的统计信息。例如,如果我有一个节点“名人”有三种类型的关系:FAN_OF,FRIEND_OF和RELATIVE_OF如何只用一个查询获得粉丝,朋友和亲戚的数量?我知道如何单独使用每种关系类型,但我需要在一个查询中将它们全部返回。

2 个答案:

答案 0 :(得分:4)

如果我理解你的问题是什么,这应该让你接近:

START n=node(*) 
MATCH n-[r]->m 
RETURN n, TYPE(r), COUNT(m)

然后,您可以将匹配关系限制为您的类型(尽管样本中不存在这些关系):

START n=node(*) 
MATCH n-[r:FAN_OF|FRIEND_OF|RELATIVE_OF]->m 
RETURN n, TYPE(r), COUNT(m)

查看并在此处使用它:http://console.neo4j.org/?id=nbba2s

答案 1 :(得分:2)

也许这样的事情会让你开始。如果你发布一些示例图数据会很有帮助,特别是在console.neo4j.org上,这样我们就可以测试出来了。

start c=node(...)
match c<-[:FAN_OF]-fan, c-[:FRIEND_OF]-friend, c-[:RELATIVE_OF]-r
return c, count(distinct fan) as fancount, count(distinct friend) as friendcount, count(distinct r) as relativecount