我确信这是一个简单的密码查询,但我对cypher相对较新,所以提前道歉,但我找不到先前提出的问题。
如果我有一堆节点像这样连接: (:开始) - [:NEXT] - >(步骤1) - [:NEXT] - GT;(步骤2) - [:NEXT] - GT;(步骤3) - [:NEXT] - >等等
我想返回该组中的所有节点,我可以这样写: 匹配(s:开始) - [:NEXT *] - >(步骤) 返回s,步骤
但是,如果我想按照距离起始节点的距离来命令它们怎么办?是否有一个特征我是一个申请单,或者它比那更复杂?
由于
答案 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