Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

137
Vistas
mongodb: obtenga los primeros resultados X y el recuento general de la función agregada

Tengo una consulta agregada que estoy usando para obtener los 10 primeros resultados de una búsqueda entre 2 colecciones. Solo obtengo los primeros 10, porque si no uso límite y obtengo 50 resultados, la consulta se vuelve lenta (4-5 segundos) (cualquier sugerencia sobre eso también será excelente)

Entonces, debido a que estoy haciendo algún tipo de escaneo, necesito informarle al cliente la cantidad de resultados totales, para que pueda consultar más cuando sea necesario. actualmente estoy ejecutando el cursor dos veces y estoy seguro de que no es lo ideal.

 const grades = database.collection('grades'); const match = { userId }; const aggregationPipeline = [ { $match: match}, { $addFields: { userIdObj: { $toObjectId: '$userId' } } }, { $lookup: { from: 'users', localField: 'userIdObj', foreignField: '_id', as: 'userDetails', }, }, ]; const aggCursor = grades.aggregate(aggregationPipeline); const aggCursorCount = grades.aggregate([...aggregationPipeline, { $count: 'count', }]); const count = await aggCursorCount.toArray(); const allValues = await aggCursor.limit(10).toArray(); res.json({grades: allValues, count: count[0].count});

Estoy seguro de que hay una manera más eficiente de obtener lo que necesito. Todavía estoy aprendiendo todas las cosas de mongodb.

¡Gracias!

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda