Както открихте, вторичните индекси не се поддържат в системни колекции като local.oplog.rs
и *.system.profile
. В MongoDB 2.4 и по-стари индексите изглеждат създадени, но никога не са били актуализирани. По-новите версии на MongoDB (2.6+) връщат грешка, ако се опитате директно да актуализирате системна колекция с неподдържана промяна, като например опит за създаване на допълнителни индекси.
oplog.rs
колекцията определено е "специална", защото предназначението й е само за репликация. Вътрешните елементи за репликация правят някои предположения за очакваните операции за oplog на тази основа. Например, репликацията трябва само да вмъкне записи в oplog – за разлика от ограничена колекция, която можете да създадете сами, записи в oplog никога актуализиран.
Очаква се от приложенията да четат oplog с tailable курсор, ако трябва да следват нови записи, които са вмъкнати в oplog, или да направят намиране с помощта на $natural
поръчка.
Урокът за tailable курсор разглежда някои повече подробности относно използването, но няколко конкретни точки, които трябва да се отбележат са:
- Подвижните курсори не използват индекси и връщат документи в естествен ред.
- Тъй като tailable курсори не използват индекси, първоначалното сканиране на заявката може да бъде скъпо; но след първоначално изчерпване на курсора, последващите извличания на новодобавените документи са евтини