Artículos
MongoDB

Operador MongoDB AND

03/Feb/2014

Cuando estemos realizando consultas MongoDB es fácil que necesitemos concatenar filtros en las consultas. Es decir necesitemos realizar el operador MongoDB AND.

Por ejemplo, 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 }

Podemos querer el consultar por el nombre de la ciudad y por el número de habitantes. Lo que buscaremos realizar con el operador MongoDB AND es filtrar por ciudades que empiecen por una letra y cuyos habitantes sean mayor de un número indicado.

El operador MongoDB AND tiene la siguiente estructura:

db.coleccion.find({$and:[{filtro1},{filtro2},...{filtroN}]});

Dónde los filtros podrán ser de cualquier tipo de los que soporta MongoDB.

De esta forma, para poder escribir el filtro con el operador MongoDB AND que hemos comentado antes tendremos la siguiente sentencia:

cursor = db.ciudades.find({$and:
  [{ciudad:/^M/},{habitantes:{$lt:1000000}}]});

Vemos que dentro del documento asociado al AND va un array con los filtros, que a su vez tienen la estructura BSON. Todos ellos separados por comas.

Aunque MongoDB tiene otros operadores adicionales como $or, $eq, $neq,… El operador MongoDB AND o $and se puede asumir en la propia consulta, de forma implicita, en una secuencia de filtros. Es decir, que podríamos escribir la consulta .find() de la siguiente forma:

db.coleccion.find({filtro1,filtro2,...filtroN});

Por lo que reescribiendo el anterior uso del operador MongoDB AND tendríamos lo siguiente de forma implicita:

cursor = db.ciudades.find({ciudad:/^M/,habitantes:{$lt:1000000}});

Como en todos los ejemplos, al dejar el resultado de los documentos sobre un cursor, solo nos queda el volcar el cursor:

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

Código Fuente

Descárgate el código fuente de Operador MongoDB AND
Y si te ha gustado nuestro código fuente puedes regalarnos una estrella Star

Vídeos sobre MongoDB

Disfruta también de nuestros artículos sobre MongoDB en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test MongoDB

¿Te atreves a probar tus habilidades y conocimiento en MongoDB con nuestro test?

Test MongoDB
Suscribir
Notificar de
guest
1 Comentario
Recientes
Anteriores Más votados
Opiniones integradas
Ver todos los comentarios