在neo4j中使用否定运算符,

在neo4j中使用否定运算符,,neo4j,cypher,negation,Neo4j,Cypher,Negation,在这种情况下,它将给出与john有[r:friend\u]关系的所有节点, 但是,我想要那些与约翰没有关系的人 那么,有人能帮我吗,提前谢谢 match (a)-[r:friend_of]-(b) where a.name='john' return b.name 匹配(a)-NOT[r:friend\u of]-(b)其中a.name='john'返回b.name 匹配(a)-[r:friend\u of]-(b)其中a.name='john'返回b.name 我正在尝试这一点,但没有得

在这种情况下,它将给出与john有
[r:friend\u]
关系的所有节点, 但是,我想要那些与约翰没有关系的人 那么,有人能帮我吗,提前谢谢

match (a)-[r:friend_of]-(b)  where a.name='john' return b.name
匹配(a)-NOT[r:friend\u of]-(b)其中a.name='john'返回b.name
匹配(a)-[r:friend\u of]-(b)其中a.name='john'返回b.name

我正在尝试这一点,但没有得到

我正在阅读您的问题,查找与name属性值为“john”的节点相关且与“friend\u of”关系无关的所有节点。如果这是正确的,那么我认为这将满足您的需求:

match (a)- NOT [r:friend_of]-(b)  where a.name='john' return b.name 

match (a)- <> [r:friend_of]-(b)  where a.name='john' return b.name
匹配(a)-[r]-(b),其中键入(r)“friend_of”和a.name='john'返回b.name

我将您的问题理解为,查找与name属性值为“john”的节点相关且与“friend\u of”关系无关的所有节点。如果这是正确的,那么我认为这将满足您的需求:

match (a)- NOT [r:friend_of]-(b)  where a.name='john' return b.name 

match (a)- <> [r:friend_of]-(b)  where a.name='john' return b.name
匹配(a)-[r]-(b),其中键入(r)“friend_of”和a.name='john'返回b.name

Cypher没有用于查找“不相关”节点的特殊语法

这里有一种方法可以找到与约翰不是朋友的人:

MATCH (a)-[r]-(b) WHERE TYPE(r) <> "friend_of" AND a.name = 'john' RETURN b.name

此查询首先获取John所有朋友的列表,然后返回不在该列表中的人。

Cypher没有用于查找“不相关”节点的特殊语法

这里有一种方法可以找到与约翰不是朋友的人:

MATCH (a)-[r]-(b) WHERE TYPE(r) <> "friend_of" AND a.name = 'john' RETURN b.name
此查询首先获取John所有朋友的列表,然后返回不在该列表中的人