我有下图 ( 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
将 2nd degree 节点放入每个 first
节点的集合中。使用数组下标运算符,我们随机选择一个元素。 rand()
返回一个介于 0 和 <1 之间的值,因此我们需要乘以集合长度。
关于neo4j - 返回每个子节点之一的 Cypher 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25143508/