neo4j - 在 Neo4j Cypher 查询中仅返回简单路径

标签 neo4j traversal cypher

给出如下查询:

START n = node(123)
MATCH p = n-[r:LIKES*..3]->x
RETURN p;

我通过上面的查询得到的结果路径包含循环。

我怎样才能只返回简单的路径?

鉴于此 example :
  • 如何避免具有重复节点的路径,例如:[Neo、Morpheus、Trinity、Morpheus、Neo]
  • 最佳答案

    指定路径的唯一性是 cypher 的一个计划功能。

    所以现在我们必须确定路径中没有节点是重复的。

    有一个ALL谓词必须适用于集合的所有元素(路径是)。
    并与 filter您可以提取集合的元素,因为某个条件成立。

    START neo=node(1) 
    MATCH path= neo-[r:KNOWS*..4]->other 
    WHERE ALL(n in nodes(path) where 
              1=length(filter(m in nodes(path) : m=n))) 
    RETURN neo, LENGTH(path) AS length, EXTRACT(p in NODES(path) : p.name), other 
    ORDER BY length
    

    所以我所做的是:
  • 对于路径的所有节点 n
  • 过滤等于 n 的节点的路径
  • 确定length该系列的
  • 使用 ALL 断言每个 n 必须是一个

  • 见:http://console.neo4j.org/r/dpalbl

    关于neo4j - 在 Neo4j Cypher 查询中仅返回简单路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13767748/

    相关文章:

    neo4j - Neo.ClientError.Statement.ExternalResourceFailed

    Neo4j 1.9 : How connect to HA machines? 通过 IP?当机器出现故障时我可以做什么?

    neo4j - 如何使用密码删除两个节点之间的重复关系?

    node.js - 解析树结果/获取子树

    perl - 遍历一个 trie 得到所有的单词

    java - 如何在Java中正确读取 "maze.txt"文件

    maven - 如何结合neo4j和elasticsearch

    python - 使用Traversal时如何生成URL查看?

    date - 如何将天数添加到 Cypher 中的日期属性?

    neo4j - 选择要收集的属性