原子地更新多个Mongodb文档

时间:2017-09-21 14:50:06

标签: javascript node.js mongodb mongoose database

假设我有一个收藏人员

[
    {
        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()时,有可能会成功,而另一个会失败。我想要的行为是成功或两者都失败(不更改数据库)

1 个答案:

答案 0 :(得分:0)

你可以做这样的事情

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
    }
}