1. 程式人生 > >常用cypher語句

常用cypher語句

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