首页 > 解决方案 > 如何在mongo的字符串数组中应用基于正则表达式的替换?

问题描述

我在这个结构中有一些 MongoDB 文档:

{
"name":"Bob",
"tags":["foo","bar"]
}
{
"name":"John",
"tags":["foo","bar,"]
}
{
"name":"Angela",
"tags":["foo,"]
}

由于数据迁移出错,一些标签在其字符串值中包含逗号,例如foo,不是foo

我可以使用db.collections.find({tags:/,/}). 但是我怎样才能更新它们以去掉逗号,所以例如我最终会得到:

{
"name":"John",
"tags":["foo","bar"]
}

标签: mongodb

解决方案


试试这个:

db.collections.find({tags:/,/}).forEach(function(doc){
    doc.tags = doc.tags.map(x => x.replace(/,/g, ""));    
    db.collections.save(doc);
})

推荐阅读