2010-10-07 27 views
26

He agregado el atributo MiddleName a mi objeto Cliente. El cliente es una instancia simple de Object(). Quiero eliminar este atributo de mi objeto. ¿Cómo puedo hacer eso? Estoy usando la consola interactiva MongoDb.Cómo quitar el atributo del objeto MongoDb?

+4

Encontré la respuesta => eliminar customer.MiddleName – johndoe

Respuesta

55

Debe utilizar el modificador eliminadas $ mientras que la actualización:

// db.collection.update (criterios, objNew, upsert, multi) -> para referencia

Para eliminar:

db.collection.update( 
    { 
     "properties.service" : { 
      $exists : true 
     } 
    }, 
    { 
     $unset : { 
      "properties.service" : 1 
     } 
    }, 
    false, 
    true 
); 

Para comprobar que se han eliminado puede utilizar:

db.collection.find( 
    { 
     "properties.service" : { 
      $exists : true 
     } 
    } 
).count(true); 

Recuerde utilizar la opción múltiple como verdadera si desea actualizar varios registros. En mi caso, quería eliminar el atributo properties.service de todos los registros de esta colección.

+2

He ejecutado este comando en un db de 20 millones de registros. Ya han pasado 14 minutos. Borrando un campo –

+3

Sí, no estoy sorprendido. ¿Puede sugerir una forma mejor para una base de datos diseñada para estar libre de esquemas? –

+1

La firma del argumento para db.collection.update fue modificada en 2.2: http://docs.mongodb.org/manual/reference/method/db.collection.update/ – spazm

Cuestiones relacionadas