Mongoose:如果发生错误,我可以假设我的数据

时间:2013-08-16 23:46:10

标签: node.js mongodb mongoose

假设我正在通过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吗?或者它是一个原子操作,如果有错误,没有任何更新会发生?

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

编辑:来自mongodb docs:

  

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

由于其他操作可能会交错,因此我只能假设在出现错误时,数据将处于转换状态,某些文档已更新,而其他文档则未更新。

1 个答案:

答案 0 :(得分:1)

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