到目前为止,我开始在工作中使用MongoDB.

谢谢

推荐答案

MongoDB使用进程范围的写锁来保证一次只能执行一个写操作(更新/插入/删除).因此,它会自动解决并发问题,因为根本不允许写并发.

如果4个线程try 更新操作,其中一个线程将获得写锁,执行更新并释放锁.在那之后,剩下的3个人中的一个会抓住锁,进行更新,等等.

只有当您的操作不能包装在单个写操作中时,并发性才会发挥作用.请注意,对于最常见的用例(查找文档、更新文档并以原子方式获取新版本),MongoDB提供了"findAndModify"命令,它只执行以下操作:http://www.mongodb.org/display/DOCS/findAndModify+Command

更新:现在锁定更加精细.

Mongodb相关问答推荐

MongoDB:如何通过增量向量递增整数向量

如何在 mongodb 查找的外键中使用正则表达式

Golang 无法在 MongoDB 中创建文档

如何在 go mongo-driver 中为 options.FindOne() 设置限制

(MongoDB)在同一管道中结合联合和交集

将子文档中的所有字段设置为 false,然后在单个查询中将第二个字段设置为 true

Mongo:投影不影响布尔值

替换 MongoDB 中数组中的嵌入文档

看起来当我执行 fs.writeFile() 时,更改的文件会重新启动 nodemon.怎么让它不重启?

指定字段对于 MongoDB 是transient瞬态的,但对于 RestController 不是

MongoDB 的 BinData(0, "e8MEnzZoFyMmD7WSHdNrFJyEk8M=") 中的0是什么意思?

使用 mgo 存储嵌套 struct

ZonedDateTime 与 MongoDB

有没有办法将python对象直接存储在mongoDB中而不序列化它们

Python - Pymongo 插入和更新文档

使用 MongoDB 进行嵌套分组

通过浏览器连接mongodb?

如何在 golang 和 mongodb 中通过 id 查找

MongoDB 的 MMAPV1、WiredTiger 或 In-Memory StorageEngine 如何 Select ?

我可以只获取 Cursor 对象(pymongo)中的第一项吗?