有没有办法在 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/