mangodb更新数组字符串为数组

通过csv导入的数组类型数据会变为字符串类型,如:"[""A"",""B""]"; "[1,2,3,4,5]",应为:["A","B"]; [1,2,3,4,5]。

批量更新代码:

db.getCollection('pagedata').find({'pageData.tag': {$regex: /\[(.*)\]/g}}).forEach(doc => {
  var tag = JSON.parse(doc.pageData.tag);
  doc.pageData.tag = tag;
  db.getCollection('pagedata').save(doc);
})

此方式存在性能问题,不能更新所有记录。

应该使用批处理更新的方式:

var ops = [];
db.getCollection('pagedata').find({'pageData.tag': {$regex: /\[(.*)\]/g}}).forEach(doc => {
  var tag = JSON.parse(doc.pageData.tag);
  ops.push({
    updateOne: {
      filter: {_id: doc._id},
      update: {$set: {'pageData.tag': tag}}
    }
  });
});
db.getCollection('pagedata').bulkWrite(ops);
ops = [];

 

posted @ 2022-09-20 16:15  刘镇维  阅读(44)  评论(0编辑  收藏  举报