Neo4j Cypher查询 - 使用正则表达式查询属性数组

pre*_*ees 5 regex neo4j cypher

我有一个Neo4j数据库(2.0.3).我目前正在使用Cypher在我的数据集上运行一些测试查询.我有一组记录,其中包含一个包含名称数组的属性.我希望能够搜索这个名称数组,同时还使用基本的reg-ex来执行此操作.这在密码中是否完全可能?如果不是,你怎么推荐这个呢?

将这两个查询结合起来的东西:

 MATCH (s:Record) WHERE "John" IN s.name RETURN s;
 MATCH (s:Record) WHERE s.name =~ '(?i).*john.*)' RETURN s;
Run Code Online (Sandbox Code Playgroud)

Nic*_*ite 9

请考虑以下示例数据:

CREATE (:Record {name: ['John', 'Bob']}),
       (:Record {name: ['Alice', 'Johnny']}),
       (:Record {name: ['the johnster', 'Charles']}),
       (:Record {name: ['Danny', 'Josh']})
Run Code Online (Sandbox Code Playgroud)

如果要查找属性数组中任何元素name与正则表达式匹配的所有记录,请使用ANY.如果要查找属性数组中所有元素name与正则表达式匹配的所有记录,请使用ALL.我相信你想要前者:

MATCH (s:Record)
WHERE ANY(name IN s.name WHERE name =~ '(?i).*john.*')
RETURN s.name
Run Code Online (Sandbox Code Playgroud)

返回:

s.name
John, Bob
Alice, Johnny
the johnster, Charles
Run Code Online (Sandbox Code Playgroud)

  • 完美,谢谢妮可.只是想让其他人有这个问题.在我概述的案例中,ANY是正确的关键词,正如Nicole所说. (2认同)