[英]py2neo query subgraph from Neo4j
我想從具有給定源的大型圖形數據庫中查詢子圖。 假設我想要給定節點的前 25 個鄰居,以及這組節點之間的所有關系,我的查詢應該如何?
目前我有:
MATCH (source {label:'source'}) -[:relation]-> (neighbors)
RETURN source,neighbors
LIMIT 25
這適用於 neo4j 瀏覽器,返回 26 個節點以及這些節點之間的所有現有關系。 但是,當我嘗試通過 py2neo 執行相同的查詢時:
py2neo.cypher.execute(query)
它只返回 26 個節點以及源和 25 個鄰居之間的 25 個直接邊連接,這是有道理的。 但我想知道為什么瀏覽器結果與 py2neo 結果之間存在差異。 以及如何通過返回的所有邊緣連接實現相同的結果。
一般來說,我想知道以下較小的問題:
如何將單個節點附加到neo4j中的節點列表? 例如 nlist = 鄰居 + 節點
如何返回兩組節點之間的所有關系? 例如 return (a in nlist) -[:relation]-> (b in nlist)
編輯:
為了可視化,我希望結果圖是這樣的
而不是像這樣的星圖
感謝您的任何評論。
關於 Neo4j 瀏覽器和 py2neo 結果之間的區別:可能您正在使用啟用“連接結果節點”選項的圖形可視化模式。 例如,嘗試禁用(下圖)它或將可視化模式更改為“文本”。
關於 Cypher 查詢,您可以使用collect()
合並source
和neighbors
:
MATCH (source {label:'source'})-[:relation]->(neighbors)
WITH collect(source) + collect(neighbors) as all
UNWIND all AS nodes
RETURN nodes
為了返回兩組節點之間的所有邊(在這種情況下是從集合到自身),參考這篇文章: Neo4j,獲取一組節點之間的所有關系
然后使用 Cypher 查詢返回子圖
MATCH (source {label:'source'})-[:relation]->(neighbors)
WITH collect(distinct source) + collect(neighbors) as all
UNWIND all AS nodes
MATCH (nodes)-[:relation]->(nei)
WHERE nei in nodes
RETURN nodes,nei
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.