2015-06-29 32 views
1

我有一組節點,我想編寫一個查詢來查找這些節點之間存在的每個關係。尋找一種乾淨的方式從一組節點中找到關係

任何推薦?

我的第一次嘗試是MATCH a- [rel] -b WHERE ...和我的WHERE子句將是我在我的節點集中所有ID的OR。

有什麼更好的想法嗎?

+0

止跌」一個簡單的'MATCH(n) - [r] - (o)WHERE id(n)IN {ids} AND id(o)IN {ids} RETURN distinct(r)'工作? –

+0

是的,但不需要「distinct」,因爲Cypher會自動從單個「MATCH」子句中濾除重複關係。 – cybersam

回答

0

在這些答案中,我假設您將通過ID列表作爲名爲ids的參數。

  1. 如果要排除一個節點的關係本身:如果您想包括從節點的關係,以自身

    MATCH (a)-[r]-(b) 
    WHERE id(a) IN {ids} AND id(b) IN {ids} AND a <> b 
    RETURN r; 
    
  2. MATCH (a)-[r]-(b) 
    WHERE id(a) IN {ids} AND id(b) IN {ids} 
    RETURN r; 
    
+0

將盡快嘗試!謝謝 –

0

你可以做這樣的事情:

MATCH (a)-[rel]-() 
WHERE ID(a) IN {node_ids} 
RETURN rel, ID(rel), type(rel), ID(startNode(rel)), ID(endNode(rel)) 

在這裏你會傳遞一個node_idsparameter這將是一個數組。

還請注意,如果Neo4j對節點進行碎片整理,則使用內部Neo4j ID進行長期引用節點可能會中斷。

相關問題