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

时间:2017-06-23 10:43:08

标签: neo4j cypher lowercase

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

(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) 

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

1 个答案:

答案 0 :(得分:3)

您可以在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])之后。