我如何在Neo4J中从子字符串创建关系

3
我有一组“标签”节点和“分类”节点,希望通过测试分类名称是否为标签名称的子字符串来生成两者之间的关系。到目前为止,我的方法是这样的(抱歉,我才接触Cypher一天,所以可能基本上是错误的,但我还没有找到相应的逆向工程)。
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+'.*'"

错误似乎与使用=~和连接字符串有关,任何建议将不胜感激!
1个回答

2
问题出在WHERE子句中表达式求值的顺序上。您可以通过明确表示避免这种情况:将字符串连接放入括号中即可。
WHERE tag.name =~ ('.*' + cat.name + '.*')

我试图快速查找有关Cypher运算符优先级的文档,但在运算符章节中没有找到,所以我不确定这个文档在哪里。


忘了感谢你,这正是我需要的来修复它 :) - Tom
很高兴听到这个消息,如果你遇到了Cypher运算符优先级的文档,请随意编辑并将其添加到答案中 - 这将有助于更好地理解规则是什么。 - jjaderberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接