neo4j:with之后的多个值

时间:2018-11-29 17:43:52

标签: neo4j cypher with-statement

我开始使用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,这句话什么也没说。

1 个答案:

答案 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

分组关键字为sp,因此COUNT(w)将只计算给定WORKSON和{{ 1}}个节点(它们之间至少有一个这样的关系)。该计数始终为1,因此s测试始终失败。

为了“检索在两个以上项目和相应项目中工作的学生”,请尝试以下操作:

p