MongoDB ofrece un rico conjunto de operadores de consulta que permiten filtrar colecciones con precisión quirúrgica. En el contexto de este curso trabajamos principalmente con la colecciónDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/tutosrive/db-nosql-2026-1/llms.txt
Use this file to discover all available pages before exploring further.
personas, cuyos documentos contienen campos anidados como name, location, dob y registered. Entender cómo navegar esa estructura y combinar operadores es la base para construir consultas eficientes en cualquier proyecto NoSQL.
Operadores de Comparación
Los operadores de comparación permiten evaluar el valor de un campo frente a un umbral o conjunto de valores. Se especifican dentro del documento de filtro que se pasa afind() o a la etapa $match de un pipeline.
| Operador | Descripción | Ejemplo |
|---|---|---|
$eq | Igual a | { edad: { $eq: 25 } } |
$ne | No igual a | { plan: { $ne: "free" } } |
$gt | Mayor que | { "dob.age": { $gt: 20 } } |
$gte | Mayor o igual | { semestre: { $gte: 5 } } |
$lt | Menor que | { "dob.age": { $lt: 30 } } |
$lte | Menor o igual | { "registered.age": { $lte: 10 } } |
$in | En un arreglo | { nat: { $in: ["US", "BR"] } } |
$nin | No en un arreglo | { gender: { $nin: ["male"] } } |
Operadores Lógicos
Los operadores lógicos permiten combinar múltiples condiciones de filtro.| Operador | Descripción |
|---|---|
$and | Todos los criterios deben cumplirse |
$or | Al menos uno de los criterios debe cumplirse |
$not | Niega el criterio indicado |
$nor | Ninguno de los criterios debe cumplirse |
Cuando se aplican múltiples condiciones sobre el mismo campo, MongoDB las evalúa implícitamente con
$and. Por ejemplo, { "dob.age": { $gte: 15, $lte: 20 } } es equivalente a usar $and explícitamente con dos condiciones sobre "dob.age".Proyecciones
Las proyecciones controlan qué campos devuelve un documento en el resultado. Se pasan como segundo argumento defind().
1→ incluir el campo.0→ excluir el campo._idse incluye por defecto; hay que excluirlo explícitamente con_id: 0.
Notación de Punto
La notación de punto ("campo.subcampo") permite acceder a campos dentro de documentos embebidos. Es imprescindible cuando se trabaja con colecciones que contienen objetos anidados, como personas.
Ejemplos de campos anidados en la colección personas:
| Ruta con notación de punto | Descripción |
|---|---|
"name.first" | Primer nombre |
"name.last" | Apellido |
"location.city" | Ciudad de residencia |
"location.state" | Estado o provincia |
"location.timezone.description" | Descripción de la zona horaria |
"dob.age" | Edad en años |
"dob.date" | Fecha de nacimiento (string ISO) |
"registered.age" | Años desde el registro |
Ver la Estructura de un Documento
Antes de escribir cualquier consulta, conviene inspeccionar cómo está formado un documento de la colección. El método más rápido esfindOne({}):
Ordenamiento y Límite
MongoDB permite encadenar métodos de cursor para ordenar y paginar los resultados.| Método | Descripción |
|---|---|
.sort({ campo: 1 }) | Orden ascendente |
.sort({ campo: -1 }) | Orden descendente |
.limit(n) | Devuelve los primeros n documentos |
.skip(n) | Salta los primeros n documentos |
Consultas sobre Arreglos
Cuando un campo de un documento contiene un arreglo, MongoDB permite buscar documentos donde el arreglo contenga uno o varios valores específicos.$elemMatch es útil cuando se necesita que un mismo elemento del arreglo cumpla múltiples condiciones:
Sin
$elemMatch, MongoDB busca que el arreglo tenga algún elemento que cumpla cada condición por separado, no necesariamente el mismo elemento.Resumen de Métodos de Consulta
find()
Retorna un cursor con todos los documentos que coinciden con el filtro. Acepta un segundo argumento de proyección.
findOne()
Retorna el primer documento que coincide. Ideal para inspeccionar la estructura de una colección.
countDocuments()
Cuenta los documentos que coinciden con el filtro sin retornar los documentos completos.
distinct()
Retorna los valores únicos de un campo en la colección o en el subconjunto filtrado.