Cypher:使用UNWIND

时间:2016-03-24 09:45:48

标签: regex neo4j cypher

在cypher查询中,我最终得到了一组字符串。然后,对于这些字符串中的每一个,我想检查它们是否是一组节点的属性的子字符串。我正在尝试使用正则表达式进行子串匹配,如示例中所示:

MATCH (x:Company)
WITH collect(DISTINCT x.name) AS all_company_names
UNWIND all_company_names AS company_name
MATCH (s:Division)
WHERE s.name =~ company_name + '.*'
RETURN s

但是,字符串连接会给我以下错误:

Type mismatch: expected Collection<Boolean> but was String (line 5, column 32)

我想知道UNWIND会回归什么?为什么它返回的内容不能与字符串连接?或者我的查询还有其他问题吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

偶然的机会,我在another question的答案中发现了一句话,说:

  

由于字符串连接和正则表达式比较之间的运算符顺序不明显,所以最好将字符串连接放在括号中

将字符串的完整串联与括号中的正则表达式一起解决了我的问题:

WHERE s.name =~ (company_name + '.*')