44 votes

Comment supprimer les champs dépréciés dans Mongo ?

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

113voto

Tyler Brock Points 9769

Essayez :

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

donde field est votre champ déprécié et collection est la collection d'où il a été retiré.

La commande générale de mise à jour est de la forme db.collection.update( criteria, objNew, upsert, multi ) . Le site false y true Les arguments de queue désactivent le mode upsert et activent la mise à jour multiple afin 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 au lieu d'arguments positionnels pour upsert et multi.

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

29voto

Jamund Ferguson Points 6338

Faites juste quelque chose comme ça

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

oooh la $unset réponse que quelqu'un a donnée en utilisant update() aquí est assez génial aussi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X