簡體   English   中英

使用Neo4j密碼結果中的可選節點收集結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM