我开始使用neo4j并创建了一个简单的图形进行练习。它包含在项目中工作的学生。
我想检索在两个以上项目以及相应项目中工作的学生,像这样:
match (s:Student)-[w:WORKSON]->(p:Project)
with s, p, count(w) as w_count
where w_count > 2 return s, p
这没有结果。但是,当我这样做
match (s:Student)-[w:WORKSON]->(p:Project)
with s, count(w) as w_count
where w_count > 2 return s
我找到了正确的学生,当我这样做时
match (s:Student)-[w:WORKSON]->(p:Project)
with p, count(w) as w_count
where w_count > 2 return p
我得到了正确的项目。瞥了一眼with documentation,这句话什么也没说。
答案 0 :(得分:2)
您需要查看aggregating functions的文档(如COUNT
),以及它们如何与grouping keys
一起使用。
例如,在您的第一个查询中:
match (s:Student)-[w:WORKSON]->(p:Project)
with s, p, count(w) as w_count
where w_count > 2 return s, p
分组关键字为s
和p
,因此COUNT(w)
将只计算给定WORKSON
和{{ 1}}个节点(它们之间至少有一个这样的关系)。该计数始终为1,因此s
测试始终失败。
为了“检索在两个以上项目和相应项目中工作的学生”,请尝试以下操作:
p