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!