我有一套标签'节点和'类别'节点,并希望通过测试类别的名称是否是标记名称的子字符串来生成两者之间的关系。 到目前为止,这是我的方法(道歉,我有一天进入密码所以这可能存在根本性的缺陷,但到目前为止我还没有找到与逆向工程相当的东西)
match(cat:category)
match(tag:tag) where tag.name =~ '.*'+cat.name+'.*'
merge (tag)-[:belongs_to]-(cat)
错误:
Type mismatch: expected Boolean, Collection<Boolean> or Collection<Collection<Boolean>> but was String (line 2, column 48 (offset: 67))
"match(tag:tag) where tag.name =~ '.*'+cat.name+'.*'"
错误似乎围绕着使用=〜和连接字符串,任何建议都会受到赞赏!
答案 0 :(得分:1)
问题在于WHERE子句中表达式的顺序 评估。你可以通过显式来解决它:将字符串连接括在括号中。
WHERE tag.name =~ ('.*' + cat.name + '.*')
我试着快速查找有关cypher运算符优先级的文档,但它不在operator chapter中,所以我不确定这是哪里记录的。