【发布时间】:2014-08-05 16:08:08
【问题描述】:
我有下面的图表 (try it in the neo4j console)。从中间开始,我如何编写一个密码查询,将结果限制为仅包含来自每个 2 级节点的一个,例如只返回红色节点?
【问题讨论】:
我有下面的图表 (try it in the neo4j console)。从中间开始,我如何编写一个密码查询,将结果限制为仅包含来自每个 2 级节点的一个,例如只返回红色节点?
【问题讨论】:
我假设您想在第二级随机选择。在这种情况下,以下 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 和
【讨论】:
Id (或一些 int 参数)的节点。无论如何,您的 2x 匹配查询可以简化为 MATCH (n)-[:link]->(first), first-[:link]->(second)