es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

MongoDB agrupar $count

Me gustaría contar el número de documentos devueltos por una agregación.

Estoy seguro de que mi agregación inicial funciona, porque la uso más adelante en mi programa. Para hacerlo, he creado una variable de pipeline (aquí llamada pipelineTest, pregúnteme si desea verla en detalle, pero es bastante larga, por eso no doy las líneas aquí).

Para contar el número de documentos devueltos, empujo mi pipeline con:
{$ count: & quot; totalCount & quot;}

Ahora me gustaría obtener (o registrar) el valor totalCount . ¿Qué debo hacer?

Aquí está la agregación:

pipelineTest.push({$count: "totalCount"});
cursorTest = collection.aggregate(pipelineTest, options)
console.log(cursorTest.?)

Gracias por su ayuda, he leído mucha documentación sobre agregación y aún no entiendo cómo leer el resultado de una agregación…

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para recuperar el valor total de conteo del resultado de la agregación, puedes utilizar el método toArray() del objeto cursor devuelto por el método aggregate(). Así es como debería verse el código:

    pipelineTest.push({$count: "totalCount"});
    cursorTest = collection.aggregate(pipelineTest, options);
    cursorTest.toArray((err, results) => {
        if (err) {
            console.log("Se produjo un error al recuperar el resultado de la agregación");
        } else {
            const totalCount = results[0].totalCount;
            console.log(totalCount);
        }
    });
    

    El método toArray() convierte el objeto cursor en un array y llama al callback con dos argumentos: un objeto de error (si corresponde) y el array de resultados. Como solo esperamos un documento de resultado, puedes acceder al campo totalCount directamente desde el primer elemento del array de resultado.

Comments are closed.