基本語法
使用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="">