neo4j 密码查询中的NOT IN

m3eecexj  于 2023-01-30  发布在  其他
关注(0)|答案(1)|浏览(221)

我试图查找与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文档中查找过了,但是在版本更改中有很多冲突的想法。提前感谢!

pes8fvy9

pes8fvy91#

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

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

相关问题