簡體   English   中英

來自 Neo4j 的 py2neo 查詢子圖

[英]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()合並sourceneighbors

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM