我现在正在制作一个应用程序使用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。答案 0 :(得分:1)
您的陈述构建了图表中所有人的交叉产品。
试试这个
MATCH (p:Person)
RETURN p.Role, p.Status, count(*)
在Cypher,没有“分组”。如果您使用像count
这样的聚合函数,则会在其他表达式上自动完成聚合(此处为p.Role
和p.Status
)。