在cypher中,如何返回连接节点列表及其在字符串中的位置?

时间:2016-09-01 20:06:53

标签: neo4j cypher

我确信这是一个简单的密码查询,但我对cypher相对较新,所以提前道歉,但我找不到先前提出的问题。

如果我有一堆节点像这样连接: (:开始) - [:NEXT] - >(步骤1) - [:NEXT] - GT;(步骤2) - [:NEXT] - GT;(步骤3) - [:NEXT] - >等等

我想返回该组中的所有节点,我可以这样写: 匹配(s:开始) - [:NEXT *] - >(步骤) 返回s,步骤

但是,如果我想按照距离起始节点的距离来命令它们怎么办?是否有一个特征我是一个申请单,或者它比那更复杂?

由于

2 个答案:

答案 0 :(得分:1)

您可以通过在:NEXT关系集合上引入变量并按其大小排序(要到达节点的:NEXT个数量)来强制执行排序。

MATCH (s:Start)-[rels:NEXT*]->(steps)
RETURN s, steps
ORDER BY SIZE(rels)

答案 1 :(得分:1)

路径节点按顺序返回,因此您可以使用节点集合作为起点:

MATCH (s:Start)-[rels:NEXT*]->(steps)
UNWIND range(1, size(nodes(p))-1) AS i
RETURN nodes(p)[i] as node, i
ORDER BY i

针对控制台示例的此查询示例:http://console.neo4j.org/r/7nzgov