1. 程式人生 > >neo4j cypher基於節點label、關係type的與或查詢

neo4j cypher基於節點label、關係type的與或查詢

希望能實現類似match (a:test1 & :test2),match (a:test1 | :test2)的效果

1、節點的label的與查詢

MATCH (a:test1:test2) return a limit 25
很直接,沒有什麼符號連線

2、節點的label的或查詢

按說應該有match (a:test1 | :test2)這樣的語法能夠實現需求,但是其實並不支援這麼寫,可能和neo4j內部儲存結構、記憶體cache的設計有關,正在探究中。。

方法一:union

match (a:test1)
with a.id as id
return id
union //union兩側資料名稱、格式都得相同,需要兩側零時變數名稱相同,或是用with轉換名字
match (b:test2)
with b.id as id
return id
PS1:union要求兩側資料名稱、型別相同,所以需要用with修改臨時變數名稱,或者在定義臨時變數名稱時,就使名稱相同 PS2:union是會合並相同資料的集合,union all是不合並相同資料的集合 3、關係的type的與查詢
每條關係只能有一個type,不存在與查詢

4、關係的type的或查詢

方法一:“|”或運算子

MATCH (a:test{id:1})-[r:test|:test2]-(b:test{id:2}) return r limit 25
關係type的或查詢,可以直接“:test1|:test2”這樣寫,

方法二:union

同2。。。