【问题标题】:collection lock while inserting data in mongoDb在mongoDb中插入数据时收集锁
【发布时间】:2020-04-06 10:23:15
【问题描述】:

一个环境中有两个 VM 正在运行,如果有任何 saveAll() 请求同时执行,我最终会获得所有数据两次。有什么方法可以在第一个 saveAll() 执行时将集合锁定在 mongodb 中,第二个将检查任何唯一值,如果存在,则不会将数据保存到集合中。同时,如果任何 find 查询被触发,它应该继续按原样工作。

我正在使用 MongoDB shell 版本 v4.2.3。

我的查询看起来像 - db.getCollection('Book').saveAll(books);

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    this document 中描述了各种选项。

    唯一索引听起来是个不错的策略:尝试将代表正在处理的批次的值插入到具有唯一索引的集合中,如果此插入成功则继续处理数据,否则停止处理。

    【讨论】:

      猜你喜欢
      • 2022-01-04
      • 2022-12-17
      • 2017-01-13
      • 1970-01-01
      • 2014-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-12
      相关资源
      最近更新 更多