Neo4j Cypher語法整理

  • 查詢John的朋友的朋友

添加5個人名節點,名字分別爲

CREATE (:People{name:"John"})
CREATE (:People{name:"Joe"}) 
CREATE (:People{name:"Sara"}) 
CREATE (:People{name:"Steve"}) 
CREATE (:People{name:"Maria"})

此時查詢所有人的結果如下

match (people:People) return people

給這5個人添加上朋友關係

MATCH (a:People{name:"John"}) MATCH (b:People{name:"Joe"}) CREATE (a) -[:friend]->(b)
MATCH (a:People{name:"John"}) MATCH (b:People{name:"Sara"}) CREATE (a) -[:friend]->(b)
MATCH (a:People{name:"Joe"}) MATCH (b:People{name:"Steve"}) CREATE (a) -[:friend]->(b)
MATCH (a:People{name:"Sara"}) MATCH (b:People{name:"Maria"}) CREATE (a) -[:friend]->(b)

再次查詢

match (people:People) return people

查詢John朋友的朋友的名字

match (john {name:'John'})-[:friend]->()-[:friend]->(fof) return john.name,fof.name

結果

因爲這裏查詢的只是名字,而不是節點,所以只會顯示各自的名稱。

  • 給定一個用戶名列表,找到名字在列表中的所有節點。匹配他們的朋友,僅返回那些他們關注的name屬性以'S'開頭的用戶
match (user)-[:friend]->(follower) where user.name in ['Joe','John','Sara','Maria','Steve']
 and follower.name =~'S.*' return user.name,follower.name

結果

  • 獲取John和他的朋友數量
match (n {name:'John'})-[:friend]->(friend) with n,count(friend) as friendsCount return n,friendsCount

  • 獲取John的朋友數量並保存爲John的一個屬性
match (n {name:'John'})-[:friend]->(friend) with n,count(friend) as friendsCount set n.friendsCount=friendsCount return n.friendsCount

  • 查詢朋友的朋友,不包含自己

添加3個用戶,兩個好友關係

create (adam:User {name:'Adam'}),(pernilla:User {name:'Pernilla'}),
(david:User {name:'David'}),(adam)-[:friend]->(pernilla),
(pernilla)-[:friend]->(david)

查詢結果

match (n:User) return n

match (user {name:'Adam'})-[:friend]->()-[:friend]->(friend) return friend

match (user {name:'Adam'})-[:friend]->(friend),(friend)-[:friend]-(alluser) return alluser

 該方式也是不包含自己的,可以與下面包含自己的做出比較。

  • 查詢朋友的朋友,包含自己
    match (user {name:'Adam'})-[:friend]->(friend) match (friend)-[:friend]-(alluser) return alluser

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章