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