MongoDB的bulk.update()多次更新同一个文档

问题描述 投票:0回答:1

我想知道如果我们在 mongo 批量更新操作中多次更新同一个文档,会产生性能问题吗?你在意什么?

例如

const bulk = SomeModel.collection.initializeUnorderedBulkOp();
bulk.find({ id: '123' }).update({
          $inc: {
            srcCount: -3,
            totalCount: -3,
          },
        });
bulk.find({ id: '123' }).update({
          $inc: {
            destCount: 3,
            totalCount: 3,
          },
        });
bulk.execute();

结果符合预期,但我想知道这个查询是否会影响 mongo?

mongodb mongoose mongodb-query nosql
1个回答
0
投票

MongoDB 不会关心同一个文档在 1 个批量操作中有多个更新,在一天结束时,批量操作仍然一次解析一个更新,因为每个集合都有一个负责插入/更新的编写器。它不跟踪“状态”,因此更新同一文档 2 次大致相当于更新 2 个不同的文档。

使用批量操作的主要好处是减少网络开销。

值得注意的是,每次更新都可能产生巨大的开销,因为它可能导致索引树更新并占用宝贵的写入读取时间。因此,建议您将其合并为一个更新。

© www.soinside.com 2019 - 2024. All rights reserved.