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

标签 neo4j cypher

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

enter image description here

最佳答案

我假设您想在第二层随机选择。在这种情况下,以下 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/

相关文章:

neo4j - Cypher/Neo4j 中的嵌套联合

neo4j - 用于记录正在进行的事务的数据库模型

neo4j - 查找具有共同二级关系的节点的所有子树

javascript - 按每个 Node 而不是整个查询进行限制

neo4j - 在 Neo4J 中存储历史交易数据的模式?

python - 如何关闭 py2neo 中的连接?

neo4j - 如何使用 spring-data-neo4j 配置 neo4j EmbeddedGraphDatabase (现已弃用)?

Neo4j 合并链出乎意料地慢

php - Cypher 查询作为 Neo4j 上的批处理操作

database - 如何在 Cypher Neo4j 中获取不包含(关联)具有特定属性的节点的所有节点