我是Mongodb初学者,我有这样的文件:
{
"_id": "abc",
"names": {
"1" : "name1",
"2" : "name2",
"3" : "name3"
}
}
我想使用多线程添加'name4','name5','nameX'...来“命名”
我的方式:
我知道这不是原子的-_- !!所以我的问题是如何制作原子?
我的另一种方式: 在文档中添加“版本”字段,在获取结果时,记录“版本”,然后使用“版本”设置“名称”,如:
update_one({"_id": "abc", "version": currentVersion}, {$set: {"names": newNames}})
如果与“版本”不匹配,则更新失败,新的“nameN”将不会添加到文档中。我希望它随时都能成功。
有人能帮助我吗?感谢
答案 0 :(得分:2)
MongoDB仅保证文档级别的事务。
对于您的要求,您必须使用线程同步保证应用程序级别的原子性。