关于 Mongodb:原子获取和设置

About Mongodb: Atomic Get and Set

我是 Mongodb 初学者,我有这样的文档:

{
    "_id": "abc",
    "names": {
        "1" : "name1",
        "2" : "name2",
        "3" : "name3"
    }
}

我想使用多线程添加 'name4'、'name5'、'nameX'... 到 "names"

我的方式:

我知道这不是原子的-_-!!所以我的问题是如何使其原子化?

我的另一种方式: 在文档中添加一个 'version' 字段,当获取结果时,记录 'version',然后将 'names' 设置为 'version',例如:

update_one({"_id": "abc", "version": currentVersion}, {$set: {"names": newNames}}) 

如果不匹配'version',更新失败,新的'nameN'将不会添加到文档中。我希望它随时都能成功。

有人可以帮助我吗?谢谢

MongoDB只保证文档级别的交易。

根据您的要求,您必须使用线程同步来保证应用程序级别的原子性。