2016-05-25 271 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

我更新了答案,如果不是你想要的,请通过编辑你的问题解释更多 –

相关问题