[英]Linking Optional Nodes with Cypher Query in Neo4j 2.0
我正在試圖找出將新創建的節點附加到可能存在或可能不存在的其他節點的正確方法。 基本上,CREATE A和如果B存在,LINK B到A和RETURN A.如果B不存在,只返回A.
這是我的Cypher查詢(額外的WITH子句是因為這是一個更大的查詢的一部分,我正在嘗試確保此示例代碼以相同的方式工作):
CREATE (a:A { foo: "bar" })
WITH a
OPTIONAL MATCH (b:B)
WHERE a.foo = b.foo
CREATE UNIQUE b-[:LINK]->a
WITH a
RETURN a
這不起作用,因為CREATE UNIQUE失敗,因為b為NULL。 除了將其分解為多個查詢之外,有沒有辦法實現這一目標?
我認為你需要用foreach來破解它...
CREATE (a:A { foo: "bar" })
WITH a
OPTIONAL MATCH (b:B)
WHERE a.foo = b.foo
WITH a, collect(b) as bs
FOREACH(b in bs | CREATE UNIQUE b-[:LINK]->a)
WITH a
RETURN a
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.