【问题标题】:Mongoose: What can I assume about my data in the event of an errorMongoose:如果发生错误,我可以对我的数据做出什么假设
【发布时间】:2013-09-19 23:07:00
【问题描述】:

假设我正在通过 Mongoose 进行单集合、多文档操作,例如

// all my_model doc's have flag==false here
my_model.update({flag:false}, {flag:true}, {multi:true}, function(err) {
    if (err) {
         // what can I assume here?
    }
});

如果我的my_model 文档出现错误,我该怎么说?有些人会有flag == true 吗?或者它是一个原子操作,如果有错误,就不会发生任何更新?

这种行为在其他具有单个集合的多文档操作中是否一致(例如remove())?这是我为非 ACIDity 付出的代价吗?

编辑:来自 mongodb 文档:

单个文档的修改始终是原子的,即使写入操作修改了该文档中的多个子文档。对于修改多个文档的写操作,整个操作不是原子的,其他操作可能交错。

由于其他操作可能交错,因此我只能假设在发生错误时,数据将处于过渡状态,其中一些文档已更新,而另一些则没有。

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    你的直觉是正确的。如果在多文档更新过程中出现错误,您可能会遇到一些文档有flag == true而其他文档有flag == false的情况。

    【讨论】:

      猜你喜欢
      • 2016-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-25
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多