Neo4j 第九篇:查詢數據(Match)


Cypher使用match子句查詢數據,是Cypher最基本的查詢子句。在查詢數據時,使用Match子句指定搜索的模式,這是從Neo4j數據庫查詢數據的最主要的方法。match子句之后通常會跟着where子句,向模式中添加過濾性的謂詞,用於對數據進行過濾。在查詢數據時,查詢語句分為多個部分,with子句用於對上一個查詢部分的結果進行處理,以輸出到下一個查詢部分。

一,節點查詢

對節點進行查詢,是查詢graph的基本操作,節點具有標簽和屬性,Match查詢不僅能夠按照標簽對節點進行查詢,還能按照屬性對節點進行查詢。 當沒有指定節點的標簽或屬性時,默認是選擇節點全部的標簽和屬性。

1,查詢所有節點

僅僅指定一個節點的模式,沒有標簽(Lable)和屬性,表示查詢所有的節點:

MATCH (n)
RETURN n

2,查詢帶有特定標簽的節點

當模式中指定標簽時,表示只查詢帶有特定標簽的節點,有多個標簽的節點,只要含有指定的標簽,就成功匹配,綁定該節點。

MATCH (movie:Movie)
RETURN movie.title

3,查詢相關的任意節點

指定一個節點,節點的name屬性是'Oliver Stone',查詢跟該節點相關的其他節點:

MATCH (director { name: 'Oliver Stone' })--(movie)
RETURN movie.title

4,查詢相關的特定節點

指定一個節點,查詢跟節點相關的節點,並指定相關節點的標簽

MATCH (:Person { name: 'Oliver Stone' })--(movie:Movie)
RETURN movie.title

二,基本關系的查詢

對關系進行查詢,關系的模式是由兩個節點來決定的。

1,指定關系的方向來查詢節點

對於標簽是Person,並且name屬性是'Oliver Stone'的節點,該節點指向另外一個節點movie:

MATCH (:Person { name: 'Oliver Stone' })-->(movie)
RETURN movie.title

2,查詢關系的類型

在查詢關系時,可以在match子句中指定關系變量,后續子句可以引用該變量,例如,使用type()函數查看關系的類型:

MATCH (:Person { name: 'Oliver Stone' })-[r]->(movie)
RETURN type(r)

3,匹配關系類型

在匹配關系時,可以指定關系的類型

MATCH (wallstreet:Movie { title: 'Wall Street' })<-[:ACTED_IN]-(actor)
RETURN actor.name

3,匹配多種關系類型

在匹配關系時,可以指定多種關系的類型,只需要匹配其中任意一個關系類型就匹配成功

MATCH (wallstreet { title: 'Wall Street' })<-[:ACTED_IN|:DIRECTED]-(person)
RETURN person.name

4,匹配關系類型,並指定關系變量

MATCH (wallstreet { title: 'Wall Street' })<-[r:ACTED_IN]-(actor)
RETURN r.role

5,匹配多個關系

MATCH (charlie { name: 'Charlie Sheen' })-[:ACTED_IN]->(movie)<-[:DIRECTED]-(director)
RETURN movie.title, director.name

三,匹配路徑

 路徑是節點和關系交替組合構成的序列,圖中必須滿足路徑指定的模式,才能返回路徑中的元素。

1,對變長路徑的查詢

MATCH (martin { name: 'Charlie Sheen' })-[:ACTED_IN*1..3]-(movie:Movie)
RETURN movie.title

2,路徑變量

MATCH p =(actor { name: 'Charlie Sheen' })-[:ACTED_IN*2]-(co_actor)
RETURN relationships(p),p

3,根據路徑的屬性進行匹配

MATCH p =(charlie:Person)-[* { blocked:false }]-(martin:Person)
WHERE charlie.name = 'Charlie Sheen' AND martin.name = 'Martin Sheen'
RETURN p

 

 

參考文檔:

Cypher Match


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM