Od wersji 3.4 (chyba) MongoDB ma teraz nowego operatora potoku agregacji o nazwie „aspekt”, który własnymi słowami:
Przetwarza wiele potoków agregacji w jednym etapie na tym samym zestawie dokumentów wejściowych. Każdy podpotok ma swoje własne pole w dokumencie wyjściowym, w którym jego wyniki są przechowywane jako tablica dokumentów.
W tym konkretnym przypadku oznacza to, że można zrobić coś takiego:
$result = $collection->aggregate([
{ ...execute queries, group, sort... },
{ ...execute queries, group, sort... },
{ ...execute queries, group, sort... },
{
$facet: {
paginatedResults: [{ $skip: skipPage }, { $limit: perPage }],
totalCount: [
{
$count: 'count'
}
]
}
}
]);
Wynik będzie następujący (z całkowitymi wynikami dla ex 100):
[
{
"paginatedResults":[{...},{...},{...}, ...],
"totalCount":[{"count":100}]
}
]