Cypher查询返回每个子节点之一

时间:2014-08-05 16:08:08

标签: neo4j cypher

我有下面的图表(try it in the neo4j console)。从中间开始,如何编写一个密码查询,将结果限制为仅包含每个2级节点中的一个,例如:只返回红色节点?

enter image description here

1 个答案:

答案 0 :(得分:3)

我假设你想要在第二级随机选择。在这种情况下,以下Cypher声明完成了这项工作:

START n=node:node_auto_index("name:start")
MATCH (n)-[:link]->(first)
WITH first
MATCH first-[:link]->(second)
WITH first, collect(second) AS coll
RETURN first, coll[toInt(length(coll)*rand())]

我们使用collect将第二度节点放入每个first节点的集合中。使用数组下标运算符,我们随机选择一个元素。 rand()返回0到< 1之间的值,因此我们需要乘以收集长度。