MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

mongodb définit la valeur du champ en utilisant if else lors de la mise à jour du document

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