统计人员基于角色和地位

时间:2016-06-10 10:33:31

标签: neo4j neo4jclient

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

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。

1 个答案:

答案 0 :(得分:1)

您的陈述构建了图表中所有人的交叉产品。

试试这个

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

在Cypher,没有“分组”。如果您使用像count这样的聚合函数,则会在其他表达式上自动完成聚合(此处为p.Rolep.Status)。