MongoDB unterstützt nicht die Art von bedingtem Update, nach der Sie suchen. Sie können es jedoch immer noch besser machen, als einen Suchen-, Schleifen- und Speichern-Ansatz zu verwenden.
Verschieben Sie die Bedingungsprüfung in das update
Abfrageselektor und geben Sie dann zwei Aktualisierungen aus (eine für jeden Fall), indem Sie {multi: true}
verwenden um das Update auf alle übereinstimmenden Dokumente anzuwenden.
// Start with the "if" update
Documents.update(
{some_condition: true, "some field": "some condition"},
{$set: {"status": "value 1"}},
{multi: true},
function(err, numAffected) {
// Now do the "else" update, using $ne to select the rest of the docs
Documents.update(
{some_condition: true, "some field": {$ne: "some condition"}},
{$set: {"status": "value 2"}},
{multi: true},
function(err, numAffected) {
// All done.
}
)
}
)