根据角色和地位统计人员

Statistic people base on role and status

我现在正在制作一个使用 neo4j 作为我的数据库的应用程序。 我有一个 class:

class Person
{
  public string Id{get;set;}
  public int Role{get;set;}
  public int Status {get;set;}
}

现在我有 50 个节点,其中 25 个是:

{
  Id : <GUID>
  Role: 3,
  Status : 0
}

另外25个是:

{
  Id: <GUID>
  Role: 3,
  Status : 2
}

我想根据角色和地位来统计人。 有了上面的那些记录,我有:

25人角色3,状态0

25人角色3,状态2

我试过这个查询:

MATCH (a:Person), (b:Person)
WHERE (a.Status = 0 AND a.Role = 3) OR (b.Status = 2 AND b.Role = 3)
RETURN COUNT(a), COUNT(b)

而不是 25、25

它给了我:6976, 6976

不知道是什么问题

有人可以帮我吗? 谢谢。

P/S: 我正在使用 graphenedb。

你的陈述构建了图中所有人的叉积。

试试这个

MATCH (p:Person)
RETURN p.Role, p.Status, count(*)

Cypher 中没有 "group by"。如果你使用像 count 这样的聚合函数,聚合会自动在其他表达式上完成(这里是 p.Rolep.Status)。