MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Ефективно страниране на агрегацията на MongoDB?

В методите на курсора на MongoDB (т.е. когато използвате find() ) като limit , sort , skip може да се прилага във всякакъв ред => редът няма значение. A find() връща курсор върху приложените модификации. Сортирането винаги се извършва преди ограничението, пропускането също се извършва преди ограничението. С други думи редът е:сортирай -> пропускай -> ограничавай .

Рамката за агрегиране не връща DB курсор. Вместо това връща документ с резултатите от агрегацията. Той работи, като произвежда междинни резултати на всяка стъпка от конвейера и следователно редът на операциите наистина има значение.

Предполагам, че MongoDB не поддържа ред за методите за модификатор на курсора поради начина, по който е внедрен вътрешно.

Не можете да правите страници в резултат от рамка за агрегиране, защото има един документ само с резултати. Все още можете да правите страници в обикновена заявка, като използвате пропускане и ограничаване, но по-добра практика би била да използвате заявка за диапазон поради ефективността на използването на индекс.

АКТУАЛИЗАЦИЯ:

От v2.6 рамката за агрегиране на Mongo връща курсор вместо един документ. Сравнете:v2.4 и v2.6 .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose:какво става с _doc?

  2. Mongo не може да стартира

  3. Драйвер Ruby Mongo:Как да търсите интервали от дати?

  4. Намерете в Double Nested Array MongoDB

  5. Redis срещу MongoDB