在 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])
.
我有各种具有不同标签形式的节点:
(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])
.