sql >> Databasteknik >  >> NoSQL >> MongoDB

Index på ts-fältet i oplog.rs uppdateras inte

Som du har upptäckt stöds inte sekundära index på systemsamlingar som local.oplog.rs och *.system.profile . I MongoDB 2.4 och äldre verkar indexen ha skapats, men uppdaterades aldrig. Nyare versioner av MongoDB (2.6+) returnerar ett felmeddelande om du försöker uppdatera en systemsamling direkt med en ändring som inte stöds, som att försöka skapa ytterligare index.

oplog.rs samlingen är definitivt "speciell" eftersom dess avsedda användning endast är för replikering. Replikeringsinterna gör vissa antaganden om förväntade operationer för oploggen på denna grund. Till exempel behöver replikering bara infoga oplog-poster -- till skillnad från en begränsad samling som du kan skapa själv, är oplog-poster aldrig uppdaterad.

Applikationer förväntas läsa oploggen med en vändbar markör om de behöver följa nya poster som infogas i oploggen, eller göra en sökning med $natural beställa.

Den tailable cursor tutorial går in lite mer i detalj om användning, men några särskilda punkter att notera är:

  • Anpassade markörer använder inte index och returnerar dokument i naturlig ordning.
  • Eftersom tailable markörer inte använder index, kan den initiala sökningen för frågan bli dyr; men efter att först ha tömt markören är efterföljande hämtningar av de nyligen tillagda dokumenten billiga


  1. Webbskrapning och genomsökning med Scrapy och MongoDB

  2. redis-py :Vad är skillnaden mellan StrictRedis() och Redis()?

  3. Uppdatera och returnera dokument i Mongodb

  4. Det bästa sättet att vara värd för MongoDB på DigitalOcean