Neo4J(Cypher語句)基礎查詢

歡迎各路大神臨幸寒舍

以下節(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

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容