简单的递归CYPHER查询

时间:2015-06-26 18:30:36

标签: neo4j cypher

这是一个非常简单的问题,但是第一次阅读through the docs,我无法弄清楚如何构建此查询。假设我的图表看起来像:

enter image description here

此外,每个人都有与之相关的年龄。 CYPHER的查询将为我提供约翰的年龄和约翰的整个朋友树的所有年龄列表?

到目前为止我尝试过:

MATCH (start)-[:friend]>(others)
 WHERE start.name="John"
 RETURN start.age, others.age

这有几个问题,

  1. 这只是一个朋友的深度,我想去所有约翰的朋友。

  2. 它不返回列表,而是返回一系列(john.age, other.age)

1 个答案:

答案 0 :(得分:24)

所以你需要的不仅是约翰的朋友,还有朋友的朋友。因此,您需要告诉neo4j递归地深入图表。

此查询深入2级。

n

*1..深入了解,不要放任何东西,*1..2

哦,我也在neo4j中找到了这个nice example

那么*的含义是什么:

1表示它是递归。

John node表示不包含john本身,即是起始节点。如果你在这里加0,它也将包括..本身。

2表示从此节点开始直到......

{{1}}表示递归级别。在这里你说停在2级。即不要超越史蒂夫。如果你没有放任何东西,它将继续前进,直到它找不到一个节点"有"朋友关系

这些类型的查询匹配的

文档here,回复类似here