基本语法
使用neo4j cypher查询语言的小伙伴都知道cypher提供了两个查询最短路径的特殊函数shortestPath和allShortestPath. 在cypher的语法手册里也可以看到两个函数的作用解释,顾名思义allShortestPath应该就是可以查询两个节点间指定层数内的所有最短路径。
现象
在真实测试中发现,allShortestPath在已有两点间短路径情况下,会忽略两点之间额外更长的路径。
如下所示:杨紫和林心如之间有A、B、C三条路径,allshortestpaths只能查出来A和B两条(同等长度),较长的C路径被忽略。
建议:
如果想要获取两点间指定层数内的所有路径,建议直接使用关系查询。(要注意数据量较大时会存在性能问题)
MATCH p=(n1 {thingId:"5d47e1412227360001b516a7"})-[r*0..6]-(n2 {thingId:"5d47e1432227360001b516bb"})
RETURN p
<div class="ad-wrap" style="margin-top: 12px;">
<div id="blog-title-ad" data-traceid="blog_ali" data-tracepid="blogdown" style="">