MongoDB ne prend pas en charge le type de mise à jour conditionnelle que vous recherchez. Cependant, vous pouvez toujours faire mieux que d'utiliser une approche de recherche, de boucle et de sauvegarde.
Déplacer la vérification de condition dans la update
sélecteur de requête, puis publiez deux mises à jour (une pour chaque cas), en utilisant {multi: true}
pour appliquer la mise à jour à tous les documents correspondants.
// 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.
}
)
}
)