0
我一直試圖根據節點查詢來獲取子圖。 查詢只要應該忽略的關係方向,因爲所有在子圖中的節點的連接: 例如: U1 -FRIEND-> U2 -FRIEND-> U3 U4 -FRIEND-> U5 -FRIEND-> U6Neo4j讀取沒有重複的所有子圖Cypher查詢
搜索U1或U2或U3,應該返回一組:[U1,U2,U3]
我用下面的Cypher查詢:
MATCH (a:User)-[:FRIEND_OF*0..]-(b)
WHERE a.userId = 'some_id'
WITH a, collect(DISTINCT b) AS sets
RETURN DISTINCT sets
的問題是,我得到的所有該組合的排列如下:
DATA: u1 -FRIEND-> u2 -FRIEND-> u3
RETURN: [u1,u2,u3],[u1,u3,u2],[u2,u1,u3]...
我怎樣才能區分不同的集合只返回一個排列?
我也想支持一個用戶可以在不同的子圖的情況下,所以應答應該是幾個子圖。
感謝
這是正確的方法,但如果您的子圖很大並且您看到性能命中,您可能會發現[APOC的路徑擴展器](http://stackoverflow.com/a/42227632/92359)效率更高當擴展以匹配子圖中的節點時,可變長度模式匹配。 – InverseFalcon
感謝@cybersam - 像魅力一樣工作。 也,謝謝你的指數提示。 – user2405864
不客氣。請記住[接受](http://meta.stackexchange.com/q/5234/255960)最能回答您問題的答案。 – cybersam