Neo4J Cypher - 不区分大小写的合并

标签 neo4j cypher case-insensitive

有没有办法在 Cypher (Neo4J) 中进行不区分大小写的合并?

我正在创建一个能够从一组文档中提取的实体图,并且想要合并多个文档中相同的实体(接受相同名称并不意味着它是相同的风险)实体!)。问题是文档之间的情况可能有所不同。

目前,我使用 MERGE 语法来创建合并节点,但它对大小写差异很敏感。如何执行不区分大小写的合并?

最佳答案

没有直接的方法,但你可以尝试下面的方法。MERGE是为了模式匹配而设计的,不同case的标签构成不同的模式

MERGE (a:Crew123)
WITH a,labels(a) AS t
LIMIT 1
MATCH (n)
WHERE [l IN labels(n) 
  WHERE lower(l)=lower(t[0])] AND a <> n
WITH a,collect(n) AS s
FOREACH (x IN s | 
         DELETE a)
RETURN *

上面的查询会给您一个ERROR,但如果存在类似的标签,它将删除新创建的节点。您可以在 MERGE 子句中添加其他模式。如果没有类似的标签,它将成功运行。

这只是一种解决方法,不允许新的类似标签。

关于Neo4J Cypher - 不区分大小写的合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24574826/

相关文章:

Neo4j 在创建节点时向节点添加属性或特性

通过 JDBC-Client 进行 Neo4j 单元测试

java - 线程中的异常 "main"java.lang.NoSuchMethodError : org. openrdf.query.algebra.Var.isConstant()Z

neo4j - 遍历所有节点并将每个节点与其他节点进行比较

graph - Neo4j遍历时节点属性比较

PHP/MySQL : how to search case insentitively

python - 如何在现有的两个节点之间创建关系,我正在使用 neo4j。

neo4j - 检查节点是否存在,如果不存在则创建

C# 字典 : making the Key case-insensitive through declarations

java - 区分大小写的文件扩展名和存在检查