关于Mongodb:原子获取和设置
我是Mongodb初学者,我有这样一个文档:关于Mongodb:原子获取和设置,mongodb,atomic,Mongodb,Atomic,我是Mongodb初学者,我有这样一个文档: { "_id": "abc", "names": { "1" : "name1", "2" : "name2", "3" : "name3" } } 我想使用多线程添加'name4','name5','nameX'。。。“名字” 我的方式: 步骤1:获取所有名称 步骤2:在名称中添加'nameN'(名称[n]='nameN') 步骤3:设置新名称 我知道这不是原子-u-!!
{
"_id": "abc",
"names": {
"1" : "name1",
"2" : "name2",
"3" : "name3"
}
}
我想使用多线程添加'name4','name5','nameX'。。。“名字”
我的方式:
- 步骤1:获取所有名称
- 步骤2:在名称中添加'nameN'(名称[n]='nameN')
- 步骤3:设置新名称
update_one({"_id": "abc", "version": currentVersion}, {$set: {"names": newNames}})
如果与“版本”不匹配,则更新失败,新的“名称”将不会添加到文档中。我希望它随时都能成功
有人能帮我吗?谢谢MongoDB只保证文档级别的事务
对于您的需求,您必须使用线程同步来保证应用程序级别的原子性。
names
是一个对象而不是数组。所以你不能用'names[n]='nameN'@Siddharth Ajmera谢谢,我用的是pymongo客户端