所以我理解MongoDB(和代理Mongoose)不支持事务,但涉及单个文档的操作是always atomic。在查看Mongoose文档时,我遇到了Model.create,它允许一个文档传递并将它们存储在一个动作中,如下所示:
var array = [{ type: 'jelly bean' }, { type: 'snickers' }];
Candy.create(array, function (err, jellybean, snickers) {
// ...
}
这个动作是原子的吗? Mongo是一次保存所有文档,还是Mongoose ODM循环遍历数组,一次保存一个文档?来源(或源代码)将不胜感激。 (另外,我是新人,所以请不要拍!)
答案 0 :(得分:3)
MongoDB有线协议接受单个文档或多个文档with OP_INSERT。但是,在服务器上,它们仍然一次插入一个。
换句话说,如果服务器在插件中部分崩溃,则会插入一些文档,而其他文档则不会。在每个文档中,您可以保证一致的视图 - 无论是全部插入还是不插入。但对于多份文件,不存在这样的保证。