2012-04-13 9 views
33

Necesito eliminar una determinada clave y valor de cada entrada en una colección en particular. He investigado eliminar y parece ser solo para entradas completas. En cuanto a la actualización, no creo que la actualización de una clave en particular con nulo o una cadena vacía logre lo que estoy tratando de hacer. Soy un principiante con mongodb, así que disculpen mi ignorancia.Eliminación de una clave/valor de la entrada de MongoDB existente

Para resumir, ¿cómo puedo convertir

{ 
    "_id" : 1234, 
    "name" : "Chris", 
    "description" : "Awesome" 
} 

en

{ 
    "_id" : 1234, 
    "name" : "Chris" 
} 

sin borrar la entrada y la creación de uno nuevo, o el uso de los comandos no mongodb? ¡Gracias!

+0

duplicado posible de [¿Cómo se quita un campo completamente de Mongo?] (Http://stackoverflow.com/questions/6851933/how-do-i-remove-a-field-completamente-de-mongo) –

Respuesta

68

Pruebe $unset en una llamada al update().

En otras palabras,

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} });

debería funcionar. Link.

+1

¡Gracias! Esto funcionó perfectamente. – Chris

+15

Para actualizar todos los documentos de una colección, puede usar: 'db.collection_name.update ({}, {$ unset: {description: 1}}, false, true);' La última verdad es para la actualización de varios documentos –

+2

Versiones más recientes admite un formato más legible: 'db.example.update ({}, {$ unset: {words: 1}}, {multi: true})' – phocks

-5

También piense en upsert() que insertará su fila como un nuevo documento si _id no existe o actualice el documento existente, si lo hay.

2

Para hacer referencia a un paquete y retire varias "claves", probar este

db['name1.name2.name3.Properties'].remove([ { "key" : "name_key1" }, { "key" : "name_key2" }, { "key" : "name_key3" })] 
Cuestiones relacionadas