sql >> Base de Datos >  >> NoSQL >> MongoDB

Agregación de MongoDB:¿Cómo obtener el recuento total de registros?

Desde v.3.4 (creo) MongoDB ahora tiene un nuevo operador de tubería de agregación llamado 'faceta' que en sus propias palabras:

Procesa múltiples canalizaciones de agregación dentro de una sola etapa en el mismo conjunto de documentos de entrada. Cada canalización secundaria tiene su propio campo en el documento de salida donde sus resultados se almacenan como una matriz de documentos.

En este caso particular, esto significa que uno puede hacer algo como esto:

$result = $collection->aggregate([
  { ...execute queries, group, sort... },
  { ...execute queries, group, sort... },
  { ...execute queries, group, sort... },
  {
    $facet: {
      paginatedResults: [{ $skip: skipPage }, { $limit: perPage }],
      totalCount: [
        {
          $count: 'count'
        }
      ]
    }
  }
]);

El resultado será (por ejemplo, 100 resultados totales):

[
  {
    "paginatedResults":[{...},{...},{...}, ...],
    "totalCount":[{"count":100}]
  }
]