Question Comment supprimer des champs obsolètes dans Mongo? [fermé]


J'ai supprimé certains champs de la définition du document. Je veux supprimer ce champ dans tous les documents de collection. Comment puis-je le faire?


44
2017-12-27 05:01


origine


Réponses:


Essayer:

db.collection.update(
    { '<field>': { '$exists': true } },  // Query
    { '$unset': { '<field>': true  } },  // Update
    false,                               // Upsert
    true                                 // Multi-update
)

field est votre champ déconseillé et collection est la collection dont il a été retiré.

La commande de mise à jour générale est de la forme db.collection.update( criteria, objNew, upsert, multi ). le false et true Les arguments finaux désactivent le mode de mise à jour et activent la mise à jour multiple pour que la requête mette à jour tous les documents de la collection (pas seulement la première correspondance).

Mise à jour pour MongoDB 2.2+

Vous pouvez maintenant fournir un objet JSON à la place des arguments de position pour upsert et multi.

db.collection.update(
    { '<field>': { '$exists': true } },  // Query
    { '$unset': { '<field>': true  } },  // Update
    { 'multi': true }                    // Options
)

113
2017-12-27 17:24



juste faire quelque chose comme ça

db.people.find().forEach(function(x) {
   delete x.badField;
   db.people.save(x);
})

oooh le $unset répondre à quelqu'un a donné en utilisant update()  ici C'est vraiment génial aussi.


29
2017-12-27 05:07