sql >> Databáze >  >> NoSQL >> MongoDB

Agregace MongoDB:Jak získat celkový počet záznamů?

Od verze 3.4 (myslím) má nyní MongoDB nového operátora agregačního kanálu s názvem 'facet', který jejich vlastními slovy:

Zpracovává více agregačních kanálů v rámci jedné fáze na stejné sadě vstupních dokumentů. Každý dílčí kanál má ve výstupním dokumentu své vlastní pole, kde jsou jeho výsledky uloženy jako pole dokumentů.

V tomto konkrétním případě to znamená, že lze udělat něco takového:

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

Výsledek bude (s celkovými výsledky např. 100):

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


  1. Online zálohy Apache HBase s CopyTable

  2. 6 nejlepších technik optimalizace práce MapReduce

  3. Zdá se, že výsledky MapReduce jsou omezeny na 100?

  4. Mongoose:Získejte úplný seznam uživatelů