Eliminar campo de un documento en MongoDB

17/Ene/2016 MongoDB Deja un comentario

Una de las cosas más potentes de MongoDB es la capacidad de crecimiento de sus documentos, lo cual permite ir añadiendo campos con diferentes valores atendiendo a las necesidades que nos vayan apareciendo. Pero de igual manera puede aparecer la necesidad de tener que eliminar campo de un documento en MongoDB, ya sea de un documento en concreto o de toda la colección.

Vamos a ver qué pasos necesitaríamos para poder eliminar campo de un documento en MongoDB. Lo primero será conectarnos a nuestra base de datos:

  1. conn = new Mongo();
  2. db = conn.getDB("demografia");

En concreto nos hemos conectado a una base de datos MongoDB con información demográfica: ciudades, estados,... En el caso de las ciudades los documentos tienen una estructura de esta forma:

  1. {
  2. "_id" : ObjectId("525ab02733b01a66a9dcbc5f"),
  3. "ciudad" : "Zaragoza",
  4. "habitantes" : 679624,
  5. "catedrales" : 2
  6. }

El siguiente paso será eliminar el campo "catedrales" del documento, en concreto del documento cuya ciudad coincida con Zaragoza. Para ello vamos a utilizar el operado $unset, dicho operador recibe como parámetro un documento JSON con los campos que queremos borrar.

La sentencia a ejecutar dentro de nuestro Shell de MongoDB será:

  1. db.ciudades.update({"ciudad":"Zaragoza"},{$unset:{"catedrales":""}})

Vemos que los campos tienen como valor las dobles comillas. Si ahora volvemos a consultar la colección de ciudades veremos que ya no existe el campo catedrales dentro del documento.

  1. documento = db.ciudades.findOne({ciudad:"Zaragoza"});
  2. printjson(documento);

El operador $unset nos permite de forma sencilla eliminar campo de un documento en MongoDB.

Vídeos sobre MongoDB


Difunde el Conocimiento

Si te ha gustado el artículo o te ha sido de utilidad, no dejes de compartirlo con tus amigos en las redes sociales... Te estaremos muy agradecidos. :-D

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*