Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

135
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!