WITH子句允許將查詢部分鏈接在一起,將其中一個部分的結果輸送到下一個部分中作為起點或條件。
需要注意的是,with 只影響作用域中的變量。沒有包含在WITH子句中的任何變量都不會轉移到查詢的其余部分。
with簡介
使用with您可以在輸出傳遞到后續查詢部分之前對其進行操作. 常見的用法是,with配合 order by 和 limit 對實體進行聚合或者過濾.
過濾聚合函數的結果
看一個例子:
ATCH (david { name: 'David' })--(otherPerson)-->()
WITH otherPerson, count(*) AS foaf
WHERE foaf > 1
RETURN otherPerson.name
在對結果使用collect之前對它們進行排序
MATCH (n)
WITH n
ORDER BY n.name DESC LIMIT 3
RETURN collect(n.name)
限制路徑搜索的分支
MATCH (n { name: 'Anders' })--(m)
WITH m
ORDER BY m.name DESC LIMIT 1
MATCH (m)--(o)
RETURN o.name