如何检查一个节点是否包含与其他节点的关系,该节点中是否包含2个特定代码,但在Neo4j Cypher Query中不包含特定代码

问题描述 投票:0回答:1

我尝试如下

Match(A)-[r1]->(B) where B.Code IN ['aaa', 'bbb'] and B.Code <> 'ccc' 
return A, B

似乎不正确。这将返回带有“ aaa”和“ bbb”的B记录,而忽略“ ccc”。如果它有'ccc',我根本不想返回B。不只是忽略这种关系。

其他尝试:与上面相同的结果

Match(A)->[r1]->(B) where B.Code <> 'ccc'
With *
Match(A)->[r1]->(B) where B.Code IN ['aaa', 'bbb']
return A, B 

enter image description here

它返回的结果是A带有aaa,A带有bbb,X带有aaa,X带有bbb。我只期望X。请您更正我做错的地方。

neo4j cypher
1个回答
0
投票

类似这样的方法应该起作用:

MATCH (A)-->(B)
WHERE B.Code IN ['aaa', 'bbb', 'ccc']
WITH A, COLLECT(B) AS bs, COLLECT(B.Code) AS codes
WHERE 'ccc' NOT IN codes
RETURN A, bs
© www.soinside.com 2019 - 2024. All rights reserved.