常用cypher語句
阿新 • • 發佈:2018-12-24
1.查詢
簡單查詢
查詢10個Person節點
match (n:Person) return n limit 10
查詢Person節點與Phone節點中有HAS_PHONE關係
match (n:Person)-[:HAS_PHONE]->(p:Phone) return n,p
查詢10條關係:Person節點與Phone節點中有HAS_PHONE關係,且Person節點的name=‘姓名6’
match (n:Person)-[:HAS_PHONE]->(p:Phone) where n.name="姓名6" return n,p limit 20
多維度查詢
查詢以下關係:Person節點n和Phone節點p1擁有HAS_PHONE關係,且p1節點與另一個Phone節點p2擁有CALL關係
match (n:Person)-[:HAS_PHONE]->(p1:Phone)-[:CALL]->(p2:Phone)
關係查詢
查詢任意節點與任意節點間有CALL關係的關係
match p=()-[:CALL]->()
正則查詢
查詢Users所有節點中,name符合正則’Jack.*'的節點
match (n:Users) where n.name=~'Jack.*' return n
包含查詢
查詢Users所有節點中,name中包含’J’的節點
match (n:Users) where n.name contains 'J' return n
2.建立
簡單建立
建立一個Person-LOVES->Dog的關係
create (n:Person)-[:LOVES]->(m:Dog)
屬性建立
建立Person-FEAR->Tiger的關係,且Person.name=‘李四’,FEAR.Level=1,Tiger.type=‘東北虎’
create (n:Person{name:"李四"})-[:FEAR(Level:1)]->(M:Tiger{type:"東北虎"})
給兩個沒有關係的實體建立關係
建立一個關係k,使得name=“王五”的Person與name:"趙六"的Person有KNOW的關係
match (n:Person{name:"王五"}), (m:Person{name:"趙六"})
create (n)-[k:KNOW]->(m) return k
有則返回,沒有則建立:merge
如果建立的關係已存在,則返回該關係,如果建立的關係不存在,則建立
match (n:Person{name:"王五"}), (m:Person{name:"趙六"})
merge (n)-[k:KNOW]->(m) return k
3.刪除
刪除關係
刪除name="李四"的Person節點與Tiger節點間的FEAR關係
match (n:Person{name:"李四"})-[f:FEAR]->(M:Tiger)
delete f
刪除實體
刪除name="李四"的Person節點
match (n:Person{name:"李四"})
delete n
刪除重複節點
如果有多個name=“張三”的People節點,刪除只保留一個
match (p:People{name:"張三"}) with p skip 1 delete p
4.修改
修改屬性
給type="東北虎"的Tiger節點插入age標籤,且age的屬性為10
match (t:Tiger) where t.type="東北虎" set t.age=10 return t
修改關係名稱
將HAS_Phone修改為HAS_PHONE
match (a)-[h:HAS_Phone]->(b)
create (a)-[h2:HAS_PHONE]->(b)
set h2=h
with h
delete h
5.建立唯一索引
給Phone節點建立唯一索引number
CREATE CONSTRAINT ON (p:Phone) ASSERT p.number IS UNIQUE