计算通过特定类型的关系连接到neo4j中另一个节点的节点总数

时间:2016-02-09 12:03:42

标签: neo4j cypher

我的数据库中有两种类型的节点"组织"和"用户"这些连接为:

(u : User)-[:TEAMMEMBER_OF | BOARDMEMBER_OF | FOUNDER_OF]->(o : Organisation)

因此,用户可以是团队成员,董事会成员或创始人。现在我必须返回总共少于5个成员的所有组织。它可能比组织没有任何成员。为了计算成员数量,我写了一个像这样的查询

Match (o : Organisation) 
Optional Match (o)<-[r:TEAMMEMBER_OF | BOARDMEMBER_OF | FOUNDER_OF]-(u : User) 
return o, cnt

但它没有给我正确的每个组织成员数。

1 个答案:

答案 0 :(得分:3)

您需要了解count(*)count(x)之间的细微差别。后者计算x的非空值的数量,而前者给出行的数量 - 包括空值。

match (o:Organisation) 
optional match (o)<-[r:TEAMMEMBER_OF|:BOARDMEMBER_OF|:FOUNDER_OF]-(u:User) 
with o, count(u) as cnt // of Org has no members we get 0
where cnt < 5
return o, cnt