MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

mongodb define o valor do campo usando if else durante a atualização do documento


O MongoDB não suporta o tipo de atualização condicional que você está procurando. No entanto, você ainda pode fazer melhor do que usar uma abordagem de localizar, fazer um loop e salvar.

Mova a verificação de condição para o update seletor de consulta e, em seguida, emita duas atualizações (uma para cada caso), usando {multi: true} para aplicar a atualização a todos os documentos correspondentes.
// 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.
            }
        )
    }
)