Sinds v.3.4 (denk ik) heeft MongoDB nu een nieuwe aggregatiepijplijnoperator genaamd 'facet' die in hun eigen woorden:
Verwerkt meerdere aggregatiepijplijnen binnen een enkele fase op dezelfde set invoerdocumenten. Elke subpijplijn heeft zijn eigen veld in het uitvoerdocument waar de resultaten worden opgeslagen als een reeks documenten.
In dit specifieke geval betekent dit dat men zoiets als dit kan doen:
$result = $collection->aggregate([
{ ...execute queries, group, sort... },
{ ...execute queries, group, sort... },
{ ...execute queries, group, sort... },
{
$facet: {
paginatedResults: [{ $skip: skipPage }, { $limit: perPage }],
totalCount: [
{
$count: 'count'
}
]
}
}
]);
Het resultaat is (met bijvoorbeeld 100 totale resultaten):
[
{
"paginatedResults":[{...},{...},{...}, ...],
"totalCount":[{"count":100}]
}
]