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

Comment limiter le nombre de documents de mise à jour dans mongodb

Vous pouvez utiliser :

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

(Crédits pour le code forEach :MongoDB :mise à jour de documents à l'aide des données du même document)

Cela ne fera que modifier le nombre d'entrées que vous spécifiez. Donc, si vous voulez ajouter un champ appelé "newField" avec la valeur 1 à seulement la moitié de vos entrées dans "collection", par exemple, vous pouvez mettre

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

Si vous voulez ensuite que l'autre moitié ait également "newField" mais avec la valeur 2, vous pouvez faire une mise à jour avec la condition que newField n'existe pas :

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