MongoDB Projection: Seleccionar campos de un documento

08/Feb/2014 MongoDB , 1 Comentario

Si realizamos una consulta MongoDB Find lo que retornara dicha consulta es el conjunto de documentos que correspondan a dicha consulta. Se devolverán los documentos completos con todos sus campos. Si bien podemos realizar MongoDB Projection, que es seleccionar los campos de un documento que queremos devuelva la consulta.

Para especificar el MongoDB Projection dentro del método .find() deberemos de hacerlo como último parámetro del método. La sintaxis para el MongoDB Projection será la siguiente:

  1. db.coleccion.find({filtros},{projection});

Asumiento que ya sabes realizar filtros... o échale un ojo a nuestros ejemplos del método MongoDB Find. Vamos a revisar como se haría el MongoDB Projection.

Si queremos seleccionar varios campos simplemente tenemos que indicar el nombre del campo seguido de un 1. O bien utilizar un 0 para eliminar los campos a mostrar.

  1. db.coleccion.find({filtros},{campo1:0|1,campo2:'0|1,...,campoN:0|1});

De esta forma en nuestra colección de ciudades:

{ "_id" : ObjectId("525ab02733b01a66a9dcbc5b"), "ciudad" : "Madrid", "habitantes" : 3233527 }
{ "_id" : ObjectId("525ab02733b01a66a9dcbc5c"), "ciudad" : "Barcelona", "habitantes" : 1620943 }
{ "_id" : ObjectId("525ab02733b01a66a9dcbc5d"), "ciudad" : "Valencia", "habitantes" : 797028 }
{ "_id" : ObjectId("525ab02733b01a66a9dcbc5e"), "ciudad" : "Sevilla", "habitantes" : 702355 }
{ "_id" : ObjectId("525ab02733b01a66a9dcbc5f"), "ciudad" : "Zaragoza", "habitantes" : 679624 }

Si queremos mostrar solo el nombre de la ciudad, ejecutaremos la siguiente consulta:

  1. cursor = db.ciudades.find({habitantes:{$gt:1000000}},{ciudad:1});

Curiosamente el resultado será el siguiente:

{ "_id" : ObjectId("525ab02733b01a66a9dcbc5b"), "ciudad" : "Madrid" }
{ "_id" : ObjectId("525ab02733b01a66a9dcbc5c"), "ciudad" : "Barcelona" }

Vaya, queríamos mostrar solo la ciudad y resulta que nos muestra también el ObjectID.

En MongoDB Projection el campo ObjectID se mostrará siempre a no ser que indiquemos que no se tiene que mostrar.

Así que para eliminar el ObjectID tendremos que ejecutar la siguiente consulta:

  1. cursor = db.ciudades.find({habitantes:{$gt:1000000}},{ciudad:1,_id:0});

Podemos conseguir el mismo efecto de devolver solo el nombre de la ciudad si eliminamos la aparición del campo habitantes, es decir, asignandole un 0 en el MongoDB Projection.

  1. cursor = db.ciudades.find({habitantes:{$gt:1000000}},{habitantes:0,_id:0});

Ya hemos visto como manipular de forma sencilla los campos a mostrar en la consulta mediante el 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