В методите на курсора на MongoDB (т.е. когато използвате find()
) като limit
, sort
, skip
може да се прилага във всякакъв ред => редът няма значение. A find()
връща курсор върху приложените модификации. Сортирането винаги се извършва преди ограничението, пропускането също се извършва преди ограничението. С други думи редът е:сортирай -> пропускай -> ограничавай .
Рамката за агрегиране не връща DB курсор. Вместо това връща документ с резултатите от агрегацията. Той работи, като произвежда междинни резултати на всяка стъпка от конвейера и следователно редът на операциите наистина има значение.
Предполагам, че MongoDB не поддържа ред за методите за модификатор на курсора поради начина, по който е внедрен вътрешно.
Не можете да правите страници в резултат от рамка за агрегиране, защото има един документ само с резултати. Все още можете да правите страници в обикновена заявка, като използвате пропускане и ограничаване, но по-добра практика би била да използвате заявка за диапазон поради ефективността на използването на индекс.
АКТУАЛИЗАЦИЯ:
От v2.6 рамката за агрегиране на Mongo връща курсор вместо един документ. Сравнете:v2.4 и v2.6 .