如何用密码替换字符串数组中的条目



我有一个字符串数组属性,如下所示:

["name1", "name2", "name3", "name2", "name4"]

我想将这个数组中的"name2"替换为"name5":

["name1", "name5", "name3", "name5", "name4"]

到目前为止,我想出了这样的查询:

MATCH (parent)-[rel]->(child)
WHERE 'name2' IN rel.names 
SET rel.names = [x IN (rel.names+['name5']) WHERE x<>"name2"] 

这几乎是我想要的:["name1", "name3", "name4", "name5"]

这个查询的问题很明显 - 它只是静态添加一次"name5",而不检查"name2"在数组中的频率。例如,如果我有"name2"n次,则查询仅添加一个">name5"而不是n

如果没有"where 子句",查询会将"name5"添加到甚至不包含"name2"的数组中。正确的方法应该是查询应该找到 0 次"name2"并添加 0 次"name5"。所以不应该需要 where 部分。您将如何解决问题,我的解决方案是正确的方法吗?

这应该有效:

MATCH (parent)-[rel]->(child)
WHERE 'name2' IN rel.names 
SET rel.names = [x IN rel.names | CASE WHEN "name2" = x THEN "name5" ELSE x END]

最新更新