拉推原子操作?

ojo*_*jon 3 atomic mongodb

我有一个包含2个数组的文档,我想将一个元素从一个数组移动到另一个数组,我在控制台上尝试了这个,它可以工作:

db.examplecol.update({_id: ObjectId("5056b4b2b9f53a21385076c5")} , {'$pull':{setA:3}, '$push':   {setB:3}})
Run Code Online (Sandbox Code Playgroud)

但我还没有看到一个命令中有2个更新的例子.我的问题是,这是一个原子操作吗?如果在这个操作过程中出现问题,我是否有被"拉"但没有被推的"丢失"元素的风险?

小智 6

基于MongoDB的Atomic Operations文档,并且由于您的操作是在单个文档上,因此操作应该是原子操作.您应确保使用日志记录,因此如果在更新过程中中断了电源,那么MongoDB将在更新之前恢复到已知的良好状态.