2016-05-25 267 views
0

我有2個節點A和B,它們之間有關係。 A和B有狀態屬性(0或1)Neo4J匹配具有特定值的所有節點的節點

我想要狀態= 0的所有節點A,我想只有節點A有B.status = 1(但所有b.status必須等於1,如果其中之一他們等於0,我不想節點A)

我做這個查詢

MATCH (a:A)-[r]-(b:B) WHERE a.status = 0 AND ALL(x IN b.status WHERE x = 1) 
RETURN a.status, b.status 

但我有b.status = 0的一個節點...

感謝

回答

1

更新評論

後,您需要收集的B節點,以做檢查與ALL

MATCH (a:A)-[r]-(b:B) 
WHERE a.status = 0 
WITH a, collect(b) as bNodes 
WHERE ALL(x IN bNodes WHERE x.status = 1) 
UNWIND bNodes as b 
RETURN a.status, b.status 

您不需要這裏的ALL謂詞,只需使用AND:

MATCH (a:A)-[r]-(b:B) 
WHERE a.status = 0 
AND b.status = 1 
RETURN a.status, b.status 
+0

這不是我想要做的。我想要獲得所有僅具有b.status = 1的節點(所有b.status必須等於1,所有這些節點)。 – Amos

+0

好的好吧,所以有多個B節點連接到同一個A,將我的答案修改爲 –

+0

我更新了答案,如果不是你想要的,請通過編輯你的問題解釋更多 –

相關問題