【问题标题】:Updating multiple Mongodb documents atomically [duplicate]以原子方式更新多个 Mongodb 文档 [重复]
【发布时间】:2018-03-02 23:47:19
【问题描述】:

假设我有一个集合人员有

[
    {
        id: 1,
        name: 'bob'
    },
    {
        id: 2,
        name: 'john'
    }
]

我想要这个功能同时更新,但如果一个失败,另一个也会失败,例如

function update() {
    db.persons.update({id: 1}, {$set: {name: 'alex'}});
    db.persons.update({id: 2}, {$set: {name: 'michael'}});
}

当我调用 update() 时,有可能一个会成功而另一个会失败。我想要的行为是要么都成功要么都失败(不更改数据库)

【问题讨论】:

    标签: javascript node.js mongodb mongoose database


    【解决方案1】:

    你可以这样做

    function update() {
        if ((db.persons.find({id:1 })).nMatched!=0 && (db.persons.find({id:2 })).nMatched!=0){
            db.persons.update({id: 1}, {$set: {name: 'alex'}});
            db.persons.update({id: 2}, {$set: {name: 'michael'}}); 
        }else{
            //do nothing
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-06
      • 1970-01-01
      • 1970-01-01
      • 2016-01-18
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多