什么条款呢? Neo4j的

时间:2015-06-07 22:45:23

标签: neo4j with-clause

我不明白Neo4j中的WITH子句是做什么的。我读了Neo4j Manual v2.2.2,但是对于WITH子句还不是很清楚。没有很多例子。例如,我有以下图表,其中蓝色节点是足球队,黄色是他们的体育场。 enter image description here

我想找到两个或更多球队比赛的体育场馆。我发现这个查询并且有效。

match (n:Team) -[r1:PLAYS]->(a:Stadium)
with a, count(*) as foaf
where foaf > 1
return a

count(*)表示匹配行的数量。但我不明白WITH子句的作用。

1 个答案:

答案 0 :(得分:11)

WITH允许您将数据从查询的一部分传递到下一部分。无论您在WITH中列出什么,都将在下一个查询部分中提供。

你可以像在RETURN中一样使用聚合,SKIP,LIMIT,ORDER BY和WITH。 唯一的区别是您的表达式必须使用AS alias获取别名才能在以后的查询部分中访问它们。

这意味着你可以链接查询部分,其中一个计算一些数据,下一个查询部分可以使用该计算数据。在你的情况下,它是GROUP BY and HAVING在SQL中的内容,但WITH比它强大得多。

这是另一个例子

match (n:Team) -[r1:PLAYS]->(a:Stadium)
with distinct a 
order by a.name limit 10
match (a)-[:IN_CITY]->(c:City)
return c.name