在 Neo4j 中将所有属性的所有值转换为小写

Convert all values of all properties to lower-case in Neo4j

我有各种具有不同标签形式的节点:

(n:Label)
n.Name='ABS'
n.sample='ajx'

我想将所有属性值更改为小写。即上面的结果应该是:

(n:Label)
n.Name='abs'
n.sample='ajx'

我尝试了以下...

match(n:Label) SET n.Name`=toLower(n.Name) 

但是这个查询一次只更新一个属性。有没有办法在单个查询中同时更改所有属性。

您可以在 APOC procedures 的帮助下完成。具体来说 apoc.create.setProperty 程序。此查询应该有效:

MATCH (n)
WITH n, [x IN keys(n) 
        WHERE n[x] =~ '.*'
] as props
UNWIND props as p
CALL apoc.create.setProperty(n, p, toLower(n[p])) YIELD node
RETURN node

此查询匹配图形的所有节点并获取每个节点的字符串属性。在它之后 apoc.create.setProperty 被调用为每个 属性 作为新值传递 toLower(node[property]).