sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB Aggregation:Hur får man det totala antalet poster?

Sedan v.3.4 (tror jag) har MongoDB nu en ny aggregeringspipeline-operatör vid namn 'facet' som med deras egna ord:

Behandlar flera aggregeringspipelines inom ett enda steg på samma uppsättning indatadokument. Varje delpipeline har sitt eget fält i utdatadokumentet där dess resultat lagras som en array av dokument.

I det här specifika fallet betyder det att man kan göra något så här:

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

Resultatet blir (med ex 100 totalt resultat):

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


  1. Omvänd paginering genom en Redis sorterad uppsättning

  2. projektion fungerar inte med sökfråga

  3. fjäderdata - Mongodb - findBy Method för kapslade objekt

  4. Redis är en tråd. Varför ska jag då använda sallad?