MongoDB stöder inte den typ av villkorad uppdatering du letar efter. Du kan dock fortfarande göra det bättre än att använda en metod för att hitta, loopa och spara.
Flytta tillståndskontrollen till update
frågeväljare och utfärda sedan två uppdateringar (en för varje fall), med {multi: true}
för att tillämpa uppdateringen på alla matchade dokument.
// 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.
}
)
}
)