2017-09-21 2 views
0

En supposant que j'ai des personnes de collection qui aMise à jour plusieurs documents MongoDB atomiquement

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

Je veux avoir cette fonction qui met à jour à la fois, mais si l'on échoue l'autre échoue également par exemple

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

quand J'appelle update() il y a une possibilité que l'un réussisse et l'autre échoue. Le comportement que je veux que ce soit à la fois réussir ou les deux échouent (sans changer la base de données)

Répondre

0

que vous pourriez faire quelque chose comme ça

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