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

Индексът на полето ts в oplog.rs не се актуализира

Както открихте, вторичните индекси не се поддържат в системни колекции като local.oplog.rs и *.system.profile . В MongoDB 2.4 и по-стари индексите изглеждат създадени, но никога не са били актуализирани. По-новите версии на MongoDB (2.6+) връщат грешка, ако се опитате директно да актуализирате системна колекция с неподдържана промяна, като например опит за създаване на допълнителни индекси.

oplog.rs колекцията определено е "специална", защото предназначението й е само за репликация. Вътрешните елементи за репликация правят някои предположения за очакваните операции за oplog на тази основа. Например, репликацията трябва само да вмъкне записи в oplog – за разлика от ограничена колекция, която можете да създадете сами, записи в oplog никога актуализиран.

Очаква се от приложенията да четат oplog с tailable курсор, ако трябва да следват нови записи, които са вмъкнати в oplog, или да направят намиране с помощта на $natural поръчка.

Урокът за tailable курсор разглежда някои повече подробности относно използването, но няколко конкретни точки, които трябва да се отбележат са:

  • Подвижните курсори не използват индекси и връщат документи в естествен ред.
  • Тъй като tailable курсори не използват индекси, първоначалното сканиране на заявката може да бъде скъпо; но след първоначално изчерпване на курсора, последващите извличания на новодобавените документи са евтини


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Meteor използва извличане или намиране в помощни функции на шаблона?

  2. Как MongoDB дава възможност за машинно обучение

  3. Метеор има ли отделна заявка за колекции?

  4. DbRef с Mongoose - mongoose-dbref или попълване?

  5. Запитване след попълване в Mongoose