Filtrar datos en MongoDB

12/Nov/2013 MongoDB , 5 Comentarios

Una vez que hemos visto el uso del método .find() en MongoDB ahora vamos a ver como podemos filtrar datos en MongoDB.

El uso básico del método .find() hemos visto que es el siguiente:

db.coleccion.find()

Mediante esta consulta hemos conseguido recuperar todos los documentos de una colección. Pero si queremos filtrar datos en MongoDB deberemos de hacer uso de los parámetros del método .find().

El método método .find() recibe un documento JSON como parámetro que puede filtrar el contenido de los documentos que queramos recuperar. La sintaxis es:

db.coleccion.find(documentofiltro)

Es importante denotar que el parámetro del método método .find() es un documento JSON. De esta manera si partimos de nuestra lista de documentos 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
}

Podemos querer filtrar los datos relativos a la ciudad de Madrid. Para ello deberemos de construir un documento que indique que la ciudad es Madrid. El documento que lo representará será:

{ciudad:'Madrid'}

Ahora solo tenemos que pasar este documento al método método .find() para poder filtrar datos en MongoDB:

cursor = db.ciudades.find({ciudad:'Madrid'});

El método .find() siempre nos devolverá un cursor, aunque para nuestro ejemplo solo haya un documento dentro del cursor.

El código completo con la conexión a la base de datos y la consultar para que pueda filtrar datos en MongoDB sería el siguiente:

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

cursor = db.ciudades.find({ciudad:'Madrid'});

while (cursor.hasNext()) {
  printjson(cursor.next());
}

Vídeos sobre MongoDB


5 comentarios en “Filtrar datos en MongoDB”

Víctor Cuervo

Augusto

Hola, tengo una lista de usuarios con toda la información requerida pero quiero/necesito hacer una consulta donde solo me traiga el correo de los usuarios. ¿Cómo la puedo hacer?

Víctor Cuervo

Chapy

Buenas tardes! muy útil tu post. Estoy haciendo una busqueda para colecciones que tienen datos de examenes de hemoglobina completa, todos poseen el mismo numero de factura, la categoria «hemogloboina» y la misma fecha. Para mostrar el resultado completo me viene de perlas traerme todo el documento por categoria de examen, el problema es que antes debo mostrar una lista de facturas dependiendo del tipo de resultado que quiero ver. Ejemplo: fecha 01/01/01 tipo:Hemoglobina facutra: 01234, si hago la busqueda solo con estos 3 datos me aparecerán repetidas facturas con tipos de examenes repetidos con la misma fecha y muchas facturas en la lista con el mismo numero. Hay alguna forma de encontrar una fecha una categoria y un numero de factura y todos los demás documentos que tengan estos mismos 3 datos descartarlos?

Víctor Cuervo

Víctor Cuervo

Buenas Chapy,

No se si consigo seguirte. Existe un único documento que tenga la misma fecha, tipo y número de factura? Puedes poner 3 documentos y la query que utilizas.

Saludos.

Víctor Cuervo

silvia

Buenas tardes.
Yo quiero filtrar información por nombre completo como puedo unir los campos?

Víctor Cuervo

Víctor Cuervo

Buenas Silvia,

Puedes buscar por dos campos:

cursor = db.nombres.find({nombre:"Luis",apellido:"Cuervo"});

Tienes más información en http://lineadecodigo.com/mongodb/operador-mongodb-and/ y en http://lineadecodigo.com/tag/mongodb-find/

Saludos.

¿Algo que nos quieras comentar?

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

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.