在Neo4j中,Cypher是一種用于查詢圖形數據庫的語言
WITH
子句:在查詢中使用WITH
子句可以將數據分組到一個臨時結果集中。然后,您可以使用聚合函數(如SUM()
, COUNT()
, AVG()
等)對這些分組進行操作。
示例:計算每個部門的員工總數。
MATCH (e:Employee)-[:WORKS_FOR]->(d:Department)
WITH d, COUNT(e) AS employee_count
RETURN d.name AS Department, employee_count
ORDER BY employee_count DESC;
COLLECT()
函數:COLLECT()
函數可以將同一組中的所有節點收集到一個列表中。然后,您可以使用聚合函數對這些列表進行操作。
示例:計算每個部門的員工技能列表。
MATCH (e:Employee)-[:WORKS_FOR]->(d:Department)
WITH d, COLLECT(e.skills) AS skills_list
RETURN d.name AS Department, skills_list
ORDER BY LENGTH(skills_list) DESC;
REDUCE()
函數:REDUCE()
函數接受一個二元函數(接受兩個參數并返回一個值)和一個列表作為輸入,然后對列表中的元素應用該函數,從而將列表縮減為單個值。
示例:計算每個部門的員工技能總數。
MATCH (e:Employee)-[:WORKS_FOR]->(d:Department)
WITH d, REDUCE(sum = 0, skill IN COLLECT(e.skills) | sum + size([skill])) AS total_skills
RETURN d.name AS Department, total_skills
ORDER BY total_skills DESC;
這些示例展示了如何使用Cypher聚合函數進行模式匹配。您可以根據您的需求調整查詢以適應您的數據模型和查詢目標。