簡體   English   中英

Cypher根據特定關系連接匹配的節點

[英]Cypher to connect matched nodes based on specific relationship

如果我做:

MATCH (x:NODE {x.name: "Node1"})-[r:REL1]-(y:NODE) return x,r,y

然后,如何找到xy節點集中的所有REL1關系?

編輯:

根據答案,我認為問題尚不清楚。

圖表示例:

create (:T1 {name:1}), (:T1 {name:2}), (:T1 {name:3}), (:T1 {name:4}), (:T1 {name:5}), (:T1 {name:6}), (:T1 {name:7})
match (a:T1 {name:1}), (b:T1 {name:2}) create (a)-[r:REL1]->(b)
match (a:T1 {name:1}), (b:T1 {name:3}) create (a)-[r:REL1]->(b)
match (a:T1 {name:5}), (b:T1 {name:4}) create (a)-[r:REL1]->(b)
match (a:T1 {name:5}), (b:T1 {name:3}) create (a)-[r:REL1]->(b)
match (a:T1 {name:5}), (b:T1 {name:2}) create (a)-[r:REL1]->(b)
match (a:T1 {name:5}), (b:T1 {name:1}) create (a)-[r:REL1]->(b)
match (a:T1 {name:7}), (b:T1 {name:6}) create (a)-[r:REL2]->(b)
match (a:T1 {name:7}), (b:T1 {name:5}) create (a)-[r:REL2]->(b)
match (a:T1 {name:7}), (b:T1 {name:4}) create (a)-[r:REL2]->(b)
match (a:T1 {name:7}), (b:T1 {name:3}) create (a)-[r:REL2]->(b)

我將查找與節點name:5具有REL1關系的所有內容。 我還想找到返回節點之間的所有REL1關系。

所以我應該得到

5->4
5->3
5->2
5->1
1->2
1->3

但不是

7->5
7->4
7->3

因為那些是REL2關系。

所以我想我可以這樣做:

match (a:T1 {name: 5})-[b:REL1]->(c:T1) return a,b,c
union match (a:T1)-[b:REL1]-(c:T1) return a,b,c

但是問題在於我正在使用的圖形非常大,因此效率似乎很低。 我希望能夠

  1. 選擇一組節點(所有連接到5節點)
  2. 找到這些節點之間的所有連接

如果需要找出x和y節點集中的所有REL1關系,則從x節點中刪除條件。

MATCH (x:NODE)-[r:REL1]-(y:User) return x,r,y

我們正確地使用雙向,以任何一種方式查找關系,但是當您嘗試查找所有關系時,您僅選擇一個關系REL1,從關系[]中刪除標簽,因此可以使用以下查詢並返回*,它將返回所有使用的變量。

MATCH (x:NODE {x.name: "Node1"})-[r]-(y:NODE) return *

要獲得通過一個或多個REL1關系連接的所有不同的節點對,只需執行以下操作:

MATCH (a:T1)-[:REL1]->(c:T1)
RETURN DISTINCT a, c

結果將是:

╒══════════╤══════════╕
│"a"       │"c"       │
╞══════════╪══════════╡
│{"name":1}│{"name":2}│
├──────────┼──────────┤
│{"name":1}│{"name":3}│
├──────────┼──────────┤
│{"name":5}│{"name":1}│
├──────────┼──────────┤
│{"name":5}│{"name":2}│
├──────────┼──────────┤
│{"name":5}│{"name":3}│
├──────────┼──────────┤
│{"name":5}│{"name":4}│
└──────────┴──────────┘

如果您還希望每對之間的關​​系,可以執行以下操作:

MATCH (a:T1)-[r:REL1]->(c:T1)
RETURN a, c, COLLECT(r) AS rels

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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