我有一组“标签”节点和“类别”节点,我想通过测试类别名称是否是标签名称的子字符串来生成两者之间的关系。 到目前为止,这是我的方法(抱歉,有一天我开始使用密码,所以这可能存在根本性的缺陷,但到目前为止我还没有找到与逆向工程等效的方法)
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+'.*'"
错误似乎与 =~ 和连接字符串的使用有关,如有任何建议,我们将不胜感激!
最佳答案
问题在于 WHERE 子句中表达式的顺序 评估。您可以通过明确的方式绕过它:将字符串连接括在括号中。
WHERE tag.name =~ ('.*' + cat.name + '.*')
我尝试快速查找有关密码运算符优先级的文档,但它不在 operator chapter 中。 , 所以我不确定这是在哪里记录的。
关于neo4j - 如何从 Neo4J 中的子字符串创建关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31679095/