Considere el siguiente código:
const db = mongodb.getDb(); // Results count let count = (await db.collection('sec').aggregate(aggregateQuery) .group({ _id: null, count: { $sum: 1 } }) .project({ _id: 0, count: 1 }) .toArray()); console.dir(count) // test let test = await db.collection('sec').aggregate(aggregateQuery).toArray(); console.dir(test) El aggregate(aggregateQuery) filtra el anuncio de la colección y realiza una búsqueda con otra colección. La primera consulta cuenta todos los documentos resultantes del agregado y genera [ { count: 2086 } ] como se esperaba.
En mi opinión, la test debería contener un montón de documentos filtrados de la colección (de acuerdo con las operaciones agregadas), ¡pero es solo [ { count: 2086 } ] , como en la primera consulta!
Si en la segunda consulta en lugar de aggregate(aggregateQuery) pongo find() , genera todos los documentos de la colección, como se esperaba, así que supongo que hay algo que me falta en la función aggregate() ...
El objeto pasado como parámetro dentro del aggregate ( aggregateQuery en este caso) es modificado por las siguientes funciones ( group y project ), por lo que cuando se usa nuevamente en la segunda llamada al aggregate , es diferente y produce resultados diferentes.