[英]Collecting results with optional nodes in Neo4j cypher results
我的圖中有一個人員節點:
CREATE (:Person {id: "1" name:"foo"})
可以選擇為其關聯一個或多個電話號碼。 然后,我執行以下操作來查詢此人:
MATCH (p:Person)
WHERE p.id = "1"
WITH p
MATCH p-[?:PHONE]->ph
RETURN p.id, p.name, COLLECT([ph.id, ph.number]) AS phones
當此人擁有電話號碼時,此方法可以正常工作:
"1", "foo", [["p1", "111-1111"], ["p2", "111-1112"]]
但是如果此人沒有任何電話號碼,我將得到以下結果:
"1", "foo", [[null, null]]
如果沒有電話號碼,如何返回以下內容?
"1", "foo", null
您可以使用“ CASE”表達式針對兩種情況返回兩種不同的結果,
MATCH (p:Person)
WHERE p.id = "1"
WITH p
MATCH p-[?:PHONE]->ph
WITH p.id as pid, p.name as pname, collect([ph.id, ph.number]) as phones
RETURN pid, pname, CASE WHEN all ( x in head(phones) where x = NULL ) THEN NULL ELSE phones END
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.