假设我正在通过 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 文档:
单个文档的修改始终是原子的,即使写入操作修改了该文档中的多个子文档。对于修改多个文档的写操作,整个操作不是原子的,其他操作可能交错。
由于其他操作可能交错,我只能假设在发生错误时,数据将处于过渡状态,其中一些文档已更新,而另一些则没有。