neo4j - 如何从 Neo4J 中的子字符串创建关系

标签 neo4j 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+'.*'"

错误似乎与 =~ 和连接字符串的使用有关,如有任何建议,我们将不胜感激!

最佳答案

问题在于 WHERE 子句中表达式的顺序 评估。您可以通过明确的方式绕过它:将字符串连接括在括号中。

WHERE tag.name =~ ('.*' + cat.name + '.*')

我尝试快速查找有关密码运算符优先级的文档,但它不在 operator chapter 中。 , 所以我不确定这是在哪里记录的。

关于neo4j - 如何从 Neo4J 中的子字符串创建关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31679095/

相关文章:

neo4j - 如何将正则表达式应用于 Neo4j 中的字符串数组?

Neo4j 存储库 - 使用动态 where 子句编写查询

postgresql - 将关系数据库转换为图形数据库

neo4j - 优化从庞大数据集中计算两个节点之间 Jackard 相似度的查询

Neo4j - 返回最大值的节点

Neo4j 密码 : How to iterate over ExecutionResult result

python - 使用 neo4jrestclient 中的事务从索引中检索节点

当使用节点(*)副节点(1,2,3...)时,Java Neo4j Cypher 查询会导致 unsupportedException

java - 使用异步(或其他)协议(protocol)而不是其他协议(protocol)与 Neo4j 服务器进行通信

Neo4J - 使用谓词函数的 Cypher 查询未获取所需的输出