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

Come limitare il numero di documenti di aggiornamento in mongodb

Puoi usare:

db.collection.find().limit(NUMBER_OF_ITEMS_YOU_WANT_TO_UPDATE).forEach(
    function (e) {
        e.fieldToChange = "blah";
        ....
        db.collection.save(e);
    }
);

(Crediti per codice forEach:MongoDB:aggiornamento di documenti utilizzando i dati dello stesso documento)

Ciò che farà è solo modificare il numero di voci specificate. Quindi, se vuoi aggiungere un campo chiamato "newField" con valore 1 solo a metà delle tue voci all'interno di "collection", ad esempio, puoi inserire

db.collection.find().limit(db.collection.count() / 2).forEach(
    function (e) {
        e.newField = 1;
        db.collection.save(e);
    }
);

Se poi vuoi fare in modo che anche l'altra metà abbia "newField" ma con valore 2, puoi fare un aggiornamento a condizione che newField non esista:

db.collection.update( { newField : { $exists : false } }, { $set : { newField : 2 } }, {multi : true} );