在密码中查找与查询不匹配的节点



我们已经建立了一个NEO4j数据库,其中包含示例网络数据。我们目前正在尝试查找查询以查找不匹配的节点。 我们在数据库中有 10 个节点,使用以下查询获取其中的 8 个节点:

match(n:nodeType)-[r:binded]-(m.nodetype2)-[z:binded]-(t:nodeType) where n.workingMode='Working' and t.workingMode='Protection' return n

我们想要的是找到不满足上述条件的两个节点。

我发现一些完整的内容提到了 NOT x IN y 的用法,并尝试了一些解决方案,包括

match(a) where a.workingMode ='Working' match(n:nodeType)-[r:binded]-(m.nodetype2)-[z:binded]-(t:nodeType) where n.workingMode='Working' and t.workingMode='Protection' and NOT a.id IN n.id return a

但是这返回 10 和我尝试过的其他结果提供了 10 或 0 个结果。

提前致谢

可以将第一个语句的结果作为列表传递给查询的第二个语句,然后使用NOT IN排除这些节点:

MATCH(n:nodeType)-[r:binded]-(m.nodetype2)-[z:binded]-(t:nodeType) 
WHERE n.workingMode='Working' AND t.workingMode='Protection'
WITH collect(n) as ns
MATCH (a:nodeType) 
WHERE a.workingMode ='Working' AND  NOT a IN  ns
RETURN a

最新更新