具有特定格式的Neo4j cypher返回路径

具有特定格式的Neo4j cypher返回路径,neo4j,cypher,neo4j-java-api,Neo4j,Cypher,Neo4j Java Api,我有一个密码查询来返回两个节点之间的最短路径 我正在使用JavaJDBCTemplate MATCH (nodeA),(nodeB), p = shortestPath((nodeA)-[*..15]-(nodeB)) " // + "WHERE ID(nodeA) = {1} and ID(nodeB) = {2} RETURN nodes(p) as nodes " // + ",relationships(p) as ed

我有一个密码查询来返回两个节点之间的最短路径

我正在使用JavaJDBCTemplate

MATCH (nodeA),(nodeB), p = shortestPath((nodeA)-[*..15]-(nodeB)) "  //
                + "WHERE ID(nodeA) = {1} and ID(nodeB) = {2} RETURN nodes(p) as nodes "  //
                + ",relationships(p) as edges
我的问题是我有一个Util方法来映射jdbctempate结果。它仅在my cypher返回以下节点时起作用:

RETURN { id : id(node), labels : labels(node), data: node } as node

有没有办法让我的初始密码以这种格式返回结果?

节点返回一个节点列表,因此您可以使用将列表解压为一组行。所以在你的例子中

MATCH (nodeA),(nodeB), p = shortestPath((nodeA)-[*..15]-(nodeB))
WHERE ID(nodeA) = {1} AND ID(nodeB) = {2}
UNWIND nodes(p) as n
RETURN { id : id(n), labels : labels(n), data: n} as node, relationships(p) as edges

您可以使用WITH+COLLECT将节点折叠回列表,然后根据需要对关系执行相同的操作。

节点返回节点列表,因此您可以使用将列表解压成一组行。所以在你的例子中

MATCH (nodeA),(nodeB), p = shortestPath((nodeA)-[*..15]-(nodeB))
WHERE ID(nodeA) = {1} AND ID(nodeB) = {2}
UNWIND nodes(p) as n
RETURN { id : id(n), labels : labels(n), data: n} as node, relationships(p) as edges
可以使用WITH+COLLECT将节点折叠回列表中,然后根据需要对关系执行相同的操作