Estoy ejecutando la siguiente consulta
const query = { $and: [ { $or: [ { status: 'PROCESSED' }, { status: 'IN_PROGRESS' }, ], }, { content_id: { $in: contentIds }, }, ], }; para obtener todos los datos donde el content_id está en una lista dada. Me gustaría obtener los 5 elementos de datos más recientes para cada content_id .
Sé que puedo lograr esto ejecutando una consulta individual para cada ID de contenido, ordenando por content_date DESC y estableciendo un límite de 5. Me gustaría lograr todo esto en una consulta, en lugar de ejecutar consultas individuales para cada ID de contenido, es esto es posible?
db.coll.aggregate([ //match query {$group:{_id:"$content_id",items:{$push:"$$ROOT"}}}, {$addFields:{items:{$slice:["$items", 5]}}}]) ])$match para verificar que la identificación del contenido esté en la lista dada$group en cada ID de contenido, agregue el documento completo a la lista de itemsslice la matriz con los elementos requeridos Le sugiero que agregue una etapa de sort antes del project para garantizar la coherencia entre múltiples visitas.