mongoengine的运作有多原子

时间:2016-11-03 10:01:55

标签: python mongodb mongoengine

我试图在对象的状态之间转换:

User.objects(id=user_id, state=STATE_WAITING).update_one(set__state=STATE_FINISHED)

问题是,是否存在两个进程异步进行相同操作并成功的情况?

如果是这样,此操作可以是原子操作,因此下一个尝试更新用户(同时异步)的进程将失败,因为它的状态已经完成"已完成&#34 ;

1 个答案:

答案 0 :(得分:2)

在单个文档上写入时,操作是原子操作。

  

In MongoDB, a write operation is atomic on the level of a single document, even if the operation modifies multiple embedded documents within a single document.

在多个非原子文档上书写时。

此外,可以使用两阶段提交来模拟多文档事务,详细信息为here