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 @   刘镇维  阅读(50)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2017-09-20 部署prerender服务器
点击右上角即可分享
微信分享提示