Aprende a filtrar y ordenar resultados en MongoDB: operadores como $gte/$lte, búsquedas por texto simple y paginación básica con limit/skip.
Consultas y filtros en MongoDB

Una API útil no solo “lista todo”: necesita filtros. En MongoDB, filtras con objetos de consulta y operadores.

1) Filtro por igualdad

// Todos los eventos con título exacto
Event.find({ title: "Demo" })

2) Operadores comunes

  • $gte / $lte: rango (mayor/menor o igual)
  • $in: pertenece a lista
  • $regex: texto (simple)
// Duración entre 30 y 120
Event.find({ durationMin: { $gte: 30, $lte: 120 } })

3) Ordenar resultados

// Por fecha ascendente
Event.find().sort({ date: 1 })

4) Paginación básica

const page = 1;
const pageSize = 10;

Event.find()
  .sort({ date: 1 })
  .skip((page - 1) * pageSize)
  .limit(pageSize);

5) Aplicarlo a un endpoint

router.get("/", async (req, res) => {
  const { minDur, maxDur } = req.query;

  const filter = {};
  if (minDur || maxDur) {
    filter.durationMin = {};
    if (minDur) filter.durationMin.$gte = Number(minDur);
    if (maxDur) filter.durationMin.$lte = Number(maxDur);
  }

  const items = await Event.find(filter).sort({ date: 1 }).limit(100);
  res.json(items);
});

6) Recomendación

Cuando un filtro se use mucho, considera índices. Y si el texto es importante, usa índices de texto o búsquedas más avanzadas (según proyecto).