MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

mongodb legt den Feldwert mit if else während der Dokumentaktualisierung fest

MongoDB unterstützt nicht die Art von bedingtem Update, nach der Sie suchen. Sie können es jedoch immer noch besser machen, als einen Suchen-, Schleifen- und Speichern-Ansatz zu verwenden.

Verschieben Sie die Bedingungsprüfung in das update Abfrageselektor und geben Sie dann zwei Aktualisierungen aus (eine für jeden Fall), indem Sie {multi: true} verwenden um das Update auf alle übereinstimmenden Dokumente anzuwenden.

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