歡迎各路大神臨幸寒舍
以下節(jié)點標簽為people,friend,用戶自己也可以設置成其他標簽,查詢時需要用到標簽。這個標簽可以類比為關系數(shù)據(jù)庫中的表名
創(chuàng)建節(jié)點、關系
創(chuàng)建節(jié)點(小明):create (n:people{name:’小明’,age:’18’,sex:’男’}) return n;
創(chuàng)建節(jié)點(小紅): create (n:people{name:’小紅’,age:’18’,sex:’女’}) return n;
創(chuàng)建關系(小明送禮物給小紅):小明節(jié)點id為0,小紅節(jié)點id為1
start a =node(0),b=node(1) create (a)-[n:gift]->(b)return n
屬性查詢
- 查詢18歲的人
Match (n: people) where n.age = 18 return n
- 查詢大于18歲的人
Match (n: people) where n.age > 18 return n
- 查詢大于等于18歲的人
Match (n: people) where n.age >= 18 return n
- 查詢不等于18歲的人
Match (n: people) where n.age <> 18 return n
關系查詢
- 正向查詢
查詢小明送禮物給了哪些人,有兩種寫法:(以下例子類似)
1. Match (n:people)-[: gift]->(end:people) where n.name='小明' return end
2. Match (n:people{name: '小明'})-[:gift]->(end:people) return end
- 反向查詢
查詢哪些人送了禮物給小明
Match (n:people{name: '小明'})<-[:gift]-(end:people) return end
- 無方向查詢
查詢和小明有禮物來往的人
Match (n:people{name: '小明'})-[:gift]-(end:people) return end
ID查詢
在neo4j中,每一個節(jié)點,會自動有一個唯一Id。
查找id為1的節(jié)點,有兩種方式:
1. Start n = node(1) return n
2. Match (n:people) where ID(n)=1 return n
級次查詢(樹形遍歷)
[圖片上傳失敗...(image-a26446-1531123466564)]
以根部為條件,查詢第二層的節(jié)點
Match (start:people{name:’小明’})-[:gift*2..2]->(end:people) return end
以根部為條件,查詢第一層和第二層的節(jié)點
Match (start:people{name:’小明’})-[:gift*1..2]->(end:people) return end
以根部為條件,按級次查詢出所有直接或間接獲得過小明的禮物的人
Match (start:people{name:’小明’})-[:gift*]->(end:people) return end
Delete
刪除2個節(jié)點之間的關系:
Match (x:people{name:’小明’})-[r:gift]->(y:people{name:’小紅’}) delete r
刪除節(jié)點,會刪除和該節(jié)點有關的所有關系:
Match (n:people{name:’小紅’}) delete n
Count
(不按屬性)查詢標簽(people)中一共有多少節(jié)點(人):
Match (n:people) return count(n)
(按屬性)查詢標簽(people)中年齡為18歲的一共有多少節(jié)點(人):
三種寫法:
1. Match (n:people) where n.age=18 return count(n)
2. Match (n:people{age:’18’}) return count(n)
3. Match (n:people) return count(n.age=18)
Limit
查詢標簽(people)中的10個節(jié)點(人):
Match (n:people) return n limit 10
Distinct
查詢標簽(people)中所有的不同的age:
Match (n:people) return distinct(n.age)
Order by
根據(jù)標簽(people)中的name 排序:
Match(n:people) return n order by name (默認升序)
Match(n:people) return n order by name asc (升序)
Match(n:people) return n order by name desc (降序)
Union all (Union)
求并集,不去重(去重用Union):
Match(n:people) where n.age=18 return n.name as name
Union all
Match(n:friend) where n.age=18 return n.name as name
In
查詢id為0,5,8的節(jié)點:
Match (n) where ID(n) IN[0,5,8] return n
Exists
判斷節(jié)點是否存在 name這個屬性:
Match (n) where exists(n.name) return n
With
查詢name以‘小’開頭的節(jié)點:
Match (n) where n.name starts with ‘小’ return n
查詢name以‘明’結(jié)尾的節(jié)點:
Match (n) where n.name ends with ‘明’ return n
Contains
查詢name中含有 ‘小’的節(jié)點
Match (n) where n.name Contains ‘小’ return n
非原創(chuàng),轉(zhuǎn)載自:https://blog.csdn.net/free8666/article/details/52909523