2

所以我知道 MongoDB(以及代理 Mongoose)不支持事务,但涉及单个文档的操作始终是 atomic。在查看 Mongoose 文档时,我遇到了 Model.create ,它允许传递一组文档并将它们存储在一个动作中,如下所示:

var array = [{ type: 'jelly bean' }, { type: 'snickers' }];
Candy.create(array, function (err, jellybean, snickers) {
 // ...
}

这个动作是原子的吗?Mongo 是一次保存所有文档,还是 Mongoose ODM 循环遍历数组,一次保存一个文档?源(或源代码)将不胜感激。(另外,我是新人,所以请不要拍!)

4

1 回答 1

3

MongoDB Wire Protocol 接受带有 OP_INSERT的单个文档或多个文档。但是,在服务器上,它们仍然一次插入一个。

换句话说,如果服务器在插入过程中崩溃,一些文档会被插入,而另一些则不会。在每个文档中,您都可以得到一致的视图 - 要么全部插入,要么没有。但是对于多个文档,不存在这样的保证。

于 2013-05-28T05:05:34.240 回答