MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

mongodb imposta il valore del campo utilizzando if else durante l'aggiornamento del documento

MongoDB non supporta il tipo di aggiornamento condizionale che stai cercando. Tuttavia, puoi comunque fare di meglio che utilizzare un approccio trova, loop e salva.

Sposta il controllo delle condizioni nell'update selettore di query e quindi emettere due aggiornamenti (uno per ogni caso), utilizzando {multi: true} per applicare l'aggiornamento a tutti i documenti corrispondenti.

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