mongodb的原子性(Atomicity)和事物 (Transactions)

 在mongodb中,单个的写操作保持原子性是在单个的document 上。

$isolated operator

$isolated 一个写操作多个documents 的时候可以防止和其他进程交织,一旦写操作修改第一个文档,直到些操作完成或者出错,不会有一个client 看到这个改变。$isolated不能工作在 sharded clusters. $isolated 没有事件回滚机制,即时在操作过程中报错,已经修改的不会出现回滚.

db.foo.update(
    { status : "A" , $isolated : 1 },
    { $inc : { count : 1 } },
    { multi: true }
)

如果咩有$isolated 更新多个documents的时候,会和其他操作进程的交织。
mongodb 的 $isolated 的用法官网详见:https://docs.mongodb.com/manual/reference/operator/update/isolated/#up._S_isolated

mongodb 没有事物 官网给出的事物是(two-phase commit ) 是利用在写操作的过程中,单个的document 的原子性来模拟事物,觉得不怎么好用,详见官网:https://docs.mongodb.com/manual/tutorial/perform-two-phase-commits/

原文地址:https://www.cnblogs.com/Kellana/p/5822468.html