【问题标题】:Update Bulk Data in Mongodb更新 MongoDB 中的批量数据
【发布时间】:2021-03-21 15:02:08
【问题描述】:

我的收藏中有 50k 用户,我想在每条记录中添加一个新字段假设 rowNumber,我使用 cursor 尝试了这个解决方案,但它花费了太多时间,那么我怎样才能提高性能或更好的方法是什么?

  let user, cursor, rowNumber = 1;
  cursor = User.aggregate().cursor({ batchSize: 10 }).exec();
  while ((user = await cursor.next())) {
    let savedUser = await User.updateOne(
      {  _id: user._id },
      { $set: { rowNumber: rowNumber++ } }
    );
  }

【问题讨论】:

    标签: performance mongoose mongodb-query query-optimization


    【解决方案1】:

    MongoDB 有一个 bulkWrite 功能就是为了这个目的。

    const users = await User.find().exec();
    const writeOperations = users.map((user, i) => {
      return {
        updateOne: {
          filter: { _id: user._id },
          update: { rowNumber: i + 1 }
        }
      };
    });
    
    await User.bulkWrite(writeOperations);
    

    【讨论】:

      猜你喜欢
      • 2017-05-13
      • 1970-01-01
      • 1970-01-01
      • 2011-05-25
      • 1970-01-01
      • 1970-01-01
      • 2013-06-18
      • 1970-01-01
      • 2020-07-19
      相关资源
      最近更新 更多