拉推原子操作?

时间:2012-09-17 12:05:10

标签: mongodb atomic

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

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

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

1 个答案:

答案 0 :(得分:6)

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