Apache Cypher是一個用于查詢圖形數據庫的聲明式查詢語言
使用MATCH子句定義要匹配的模式: MATCH子句用于描述你想在圖形數據庫中查找的模式。它可以包含節點、關系和屬性。例如,如果你想查找具有特定屬性的節點,可以使用以下語法:
MATCH (n:Person {name: 'John Doe'})
這將查找具有標簽Person
且屬性name
為John Doe
的所有節點。
使用WHERE子句過濾結果: 在MATCH子句之后,可以使用WHERE子句對結果進行過濾。例如,如果你想查找與特定節點相連的所有節點,可以使用以下語法:
MATCH (n:Person {name: 'John Doe'})-[:FRIENDS]-(friends)
WHERE friends.age > 25
這將查找與具有名稱John Doe
的人相連的所有節點,但只返回年齡大于25的朋友節點。
使用RETURN子句選擇返回的節點和關系:
在MATCH和WHERE子句之后,可以使用RETURN子句選擇要返回的節點和關系。例如,如果你想返回名為John Doe
的人的節點及其所有朋友節點的名稱,可以使用以下語法:
MATCH (n:Person {name: 'John Doe'})-[:FRIENDS]-(friends)
WHERE friends.age > 25
RETURN n, friends
這將返回名為John Doe
的人的節點及其所有年齡大于25的朋友節點的名稱。
使用OPTIONAL子句處理可選關系:
如果你想查詢具有或不具有特定關系的節點,可以使用OPTIONAL子句。例如,如果你想查找與名為John Doe
的人相連的所有節點,無論是否存在關系,可以使用以下語法:
MATCH (n:Person {name: 'John Doe'})-[:FRIENDS*1..]-(friends)
RETURN n, friends
這將返回名為John Doe
的人的節點及其所有朋友節點,即使某些朋友節點與John Doe
之間沒有直接的關系。
使用聚合函數和GROUP BY子句進行分組和聚合操作: 如果你想對查詢結果進行分組和聚合操作,可以使用聚合函數(如COUNT、SUM、AVG等)和GROUP BY子句。例如,如果你想計算每個朋友的年齡總和,可以使用以下語法:
MATCH (n:Person {name: 'John Doe'})-[:FRIENDS]-(friends)
RETURN friends, SUM(friends.age) AS total_age
GROUP BY friends
這將返回名為John Doe
的人的所有朋友節點及其年齡總和。