Contenido del curso

Fundamentos de MongoDB

Operadores

Operadores de Comparación en MongoDB: Mayor, Menor e Igualdad

Resumen

Cuando trabajas con bases de datos, filtrar documentos por valores numéricos es una de las tareas más frecuentes. En MongoDB, los operadores de comparación $gt, $gte, $lt y $lte te permiten construir consultas precisas para encontrar documentos que cumplan condiciones numéricas específicas, e incluso combinarlas con otros operadores para lograr búsquedas más complejas.

¿Cómo funcionan los operadores greater than y greater than or equal?

Estos dos operadores permiten buscar documentos cuyo valor en un campo sea mayor que o mayor o igual a un número determinado. En MongoDB se representan como $gt (greater than) y $gte (greater than or equal) [01:40].

Por ejemplo, si tienes una colección de inventario con documentos que tienen cantidades de 15, 20, 25, 30 y 20, puedes hacer la siguiente consulta:

mongodb db.inventory.find({ quantity: { $gt: 20 } })

Esta consulta devuelve solo los documentos con cantidad mayor a 20, es decir, el de 25 y el de 30. El valor 20 queda excluido porque el operador es estrictamente mayor [02:40].

Si necesitas incluir el 20 en los resultados, cambias a $gte:

mongodb db.inventory.find({ quantity: { $gte: 20 } })

Ahora el resultado incluye los documentos con cantidad 20, 25, 30 y el segundo documento con 20. Solo queda fuera el de 15 [03:20].

¿Qué hacen los operadores less than y less than or equal?

Son el complemento inverso. $lt (less than) busca valores menores que un número, mientras que $lte (less than or equal) busca valores menores o iguales [03:55].

mongodb db.inventory.find({ quantity: { $lt: 20 } })

Esta consulta devuelve únicamente el documento con cantidad 15, ya que es el único estrictamente menor a 20 [04:20].

Al cambiar a $lte, se incluyen también los documentos con valor 20:

mongodb db.inventory.find({ quantity: { $lte: 20 } })

El resultado trae los documentos con cantidades 15, 20 y 20, excluyendo el 25 y el 30 [04:40].

¿Cómo combinar operadores para consultas por rangos?

La verdadera potencia aparece cuando combinas varios operadores en una sola consulta. No estás limitado a usar uno solo; puedes construir condiciones compuestas para definir rangos numéricos [05:10].

¿Cómo definir un rango numérico en un solo campo?

Para buscar documentos cuya cantidad esté entre 25 y 35, por ejemplo:

mongodb db.inventory.find({ quantity: { $gte: 25, $lte: 35 } })

Esta consulta devuelve los documentos con cantidad 25 y 30, que son los únicos dentro de ese rango [05:50].

Otro ejemplo: buscar cantidades entre 20 y 25 excluiría el 15 y el 30:

mongodb db.inventory.find({ quantity: { $gte: 20, $lte: 25 } })

El resultado incluye los documentos con cantidades 20, 25 y 20 [06:20].

¿Cómo mezclar operadores de rango con filtros en subdocumentos?

Puedes agregar condiciones adicionales a la consulta. Por ejemplo, filtrar por un campo dentro de un subdocumento como item.code y al mismo tiempo aplicar un rango en quantity [07:00]:

mongodb db.inventory.find({ "item.code": "123", quantity: { $gte: 20, $lte: 25 } })

Esta consulta busca documentos donde el código del ítem sea "123" y la cantidad esté entre 20 y 25. Solo devuelve los documentos que cumplen ambas condiciones simultáneamente [08:10].

Incluso puedes incorporar el operador $ne (not equal) para excluir valores específicos:

mongodb db.inventory.find({ "item.code": { $ne: "123" }, quantity: { $gte: 20, $lte: 25 } })

Esto retorna documentos cuyo código sea diferente de "123" y cuya cantidad esté en el rango indicado [08:50].

  • $gt: valores estrictamente mayores a un número.
  • $gte: valores mayores o iguales.
  • $lt: valores estrictamente menores.
  • $lte: valores menores o iguales.
  • Puedes combinar estos cuatro operadores entre sí y con otros como $eq o $ne para construir queries más específicas.

Ahora que conoces estos operadores, experimenta combinándolos en tus propias consultas y comparte qué tipo de filtros has logrado construir.