我在MongoDB上遇到了同时读取和写入问题,并且想知道是否嵌入了DB系统中的简单解决方案。
我有一个对应用程序收集统计信息的对象,并且在MongoDB上表示自己的集合中的单个文档:
{
"animals": {
"cats": 0,
"dogs": 0
}
问题是,每当用户将猫添加到其配置文件中时,我都会得到文档,增加 cats
计数并编写文档。但是,如果用户在CAT之后添加dog
,则文档读数为0-0,并且将编写0-1而不是1-1。
这是一种典型的并发读/写,但我想知道是否有办法在不添加我自己的锁定系统的情况下进行防止。谢谢!
另外:猫和狗是一个简单的例子,我主持了聊天统计数据DB(发送,接收,错误...(。
无关:与单个文档的问题并发读写操作
在这种特殊情况下,您可以使用增量操作员$inc
(https://docs.mongodb.com/manual/reference/poperation/operator/operator/update/inc/(通过写作。
$inc
是一种原子操作,因此不应出现您对阅读的问题,然后写
我认为它与"观察"有关,这是一种并发读写的工具。
如果安装它,它将监视更改并应用于前端。