不在密码查询中

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

我正在尝试查找与 cypher 中的值列表中的任何项目匹配的所有值。类似于带有 in 和 not in 的 SQL 查询。我也想在不同的查询中查找不在列表中的所有值。我的想法是我想为每个二进制节点分配一个属性,并指示节点的名称是否在预定义列表中。

我尝试了以下代码块:

MATCH (temp:APP) - [] -> (temp2:EMAIL_DOMAIN)
WHERE NOT temp2.Name IN ['GMAIL.COM', 'YAHOO.COM', 'OUTLOOK.COM', 'ICLOUD.COM', 'LIVE.COM']
RETURN temp

该块不返回任何内容,但应该返回相当大量的数据。

MATCH (temp:APP) - [] -> (temp2:EMAIL_DOMAIN)
WHERE temp2.Name NOT IN ['GMAIL.COM', 'YAHOO.COM', 'OUTLOOK.COM', 'ICLOUD.COM', 'LIVE.COM']
RETURN temp

此代码块返回与 NOT 位置相关的错误。有谁知道这个语句的正确语法?我在网上和 Neo4j 文档中查看过,但是版本更改有很多相互冲突的想法。预先感谢!

neo4j cypher graph-databases
1个回答
1
投票

Neo4j 区分大小写,因此您需要检查数据以确保 EMAIL_DOMAIN.Name 全部大写。如果名称大小写混合,您可以使用 toUpper() 转换名称。如果名称全部小写,那么您需要转换查询中的值。

MATCH (temp:APP) - [] -> (temp2:EMAIL_DOMAIN)
WHERE NOT toUpper(temp2.Name) IN ['GMAIL.COM', 'YAHOO.COM', 'OUTLOOK.COM', 'ICLOUD.COM', 'LIVE.COM']
RETURN temp
© www.soinside.com 2019 - 2024. All rights reserved.