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

Neo4j 在cypher中,如何返回连接节点的列表及其在字符串中的位置?,neo4j,cypher,Neo4j,Cypher,我相信这是一个简单的密码查询,但我对密码相对较新,所以提前道歉,但我找不到以前问过的问题 如果我有一组像这样连接的节点: (:Start)-[:NEXT]->(step1)-[:NEXT]->(step2)-[:NEXT]->(step3)-[:NEXT]->等 我想返回这个组中的所有节点,我可以这样写: 匹配(s:开始)-[:下一步*]->(步骤) 返回s、步骤 但是如果我想按它们与起始节点的距离来排序呢?我申请订单有什么特点吗?还是比这更复杂 谢谢您可以通过在:NEXT关系集合中引入变量,并

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

如果我有一组像这样连接的节点: (:Start)-[:NEXT]->(step1)-[:NEXT]->(step2)-[:NEXT]->(step3)-[:NEXT]->等

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

但是如果我想按它们与起始节点的距离来排序呢?我申请订单有什么特点吗?还是比这更复杂


谢谢

您可以通过在
:NEXT
关系集合中引入变量,并根据其大小(到达节点的
:NEXT
数量)进行排序来强制执行排序


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


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

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

针对控制台的此查询示例示例:

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

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

针对控制台的此查询示例示例:

Nice。我不知道size()函数及其在这里的应用。谢谢美好的我不知道size()函数及其在这里的应用。谢谢