40 votos

Cómo quitar obsoleto campos en Mongo?

He eliminado algunos de los campos de definición de documento. Quiero eliminar este campo a lo largo de todos los documentos de la colección. ¿Cómo puedo hacerlo?

105voto

Tyler Brock Puntos 9769

Probar:

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

donde field es su obsoleto campo y collection es la colección fue retirado.

El general del comando de actualización es de la forma db.collection.update( criteria, objNew, upsert, multi ). El false y true los argumentos del final deshabilitar upsert modo y habilitar múltiples actualización, por lo que la consulta de las actualizaciones de todos los documentos de la colección (no sólo en el primer partido).

Actualización para MongoDB 2.2+:

Ahora puede proporcionar un objeto JSON en lugar de argumentos posicionales para upsert y multi.

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

27voto

Jamund Ferguson Puntos 6338

acabo de hacer algo como esto

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

oooh la $unset respuesta alguien le dio el uso de update() aquí es bastante impresionante también.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X