neo4j cypher基於節點label、關係type的與或查詢
阿新 • • 發佈:2019-01-24
希望能實現類似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
PS1:union要求兩側資料名稱、型別相同,所以需要用with修改臨時變數名稱,或者在定義臨時變數名稱時,就使名稱相同 PS2:union是會合並相同資料的集合,union all是不合並相同資料的集合 3、關係的type的與查詢match (a:test1) with a.id as id return id union //union兩側資料名稱、格式都得相同,需要兩側零時變數名稱相同,或是用with轉換名字 match (b:test2) with b.id as id return id
每條關係只能有一個type,不存在與查詢
4、關係的type的或查詢
方法一:“|”或運算子
MATCH (a:test{id:1})-[r:test|:test2]-(b:test{id:2}) return r limit 25
關係type的或查詢,可以直接“:test1|:test2”這樣寫,
方法二:union
同2。。。