2017-06-19 59 views
0

希望瞭解是否可以做出任何事情來使查詢在大圖上顯示下。我試圖找到兩個節點之間的最短路徑,但排除包含某些其他類型節點的路徑。這個問題似乎是WHERE子句。下面的查詢只是完全停下來。neo4j帶標籤約束條件的最短路徑

MATCH p=shortestPath((p1:Party{suprRC:"21"})-[*..15]-(p2:Party{suprRC:"21"})) 
WITH p 
WHERE NONE(n in nodes(p) where labels(n) in [["Reporter"],["FirstName"],["LastName"]]) 
RETURN p limit 500; 
+0

你可以嘗試直接在匹配WHERE(離開與換句話說P輸出)。 –

+0

謝謝你的建議湯姆 - 恐怕它沒有幫助。 –

+0

幾個問題...... 1)起始節點和結束節點是...一樣的? suprRC是締約方的獨特財產嗎?如果不是,黨節點索引suprRC(我知道這應該是顯而易見的,我只是在這裏排除選項)?當你只執行MATCH(使用RETURN和LIMIT,但沒有WITH和WHERE)時......是否是高性能的?你能分享這個查詢的解釋輸出嗎? –

回答

0

的比較是錯誤的,labels(n)返回標籤的集合,你會對着一個String元素集合匹配的集合。

正如湯姆所說,你可以不指定WITH但你將不得不使用兩個NONE謂詞

MATCH p=shortestPath((p1:Party{suprRC:"21"})-[*..15]-(p2:Party{suprRC:"21"})) 
WHERE NONE(x IN nodes(p) 
      WHERE NONE(l IN ['Reporter','LastName', 'FirstName'] 
         WHERE l IN labels(x) 
        ) 
     ) 
RETURN p limit 500; 
+0

感謝Christophe的建議。我不記得爲什麼我使用了我所使用的特定習慣用法 - 儘管它確實有效(無論如何都用較小的圖表/查詢)。我嘗試了一個你建議的方法,它也起作用,但仍然太慢(查詢完成需要30分鐘)。啊。 –