Comme vous l'avez découvert, les index secondaires ne sont pas pris en charge sur les collections système telles que local.oplog.rs
et *.system.profile
. Dans MongoDB 2.4 et les versions antérieures, les index semblent avoir été créés, mais n'ont jamais été mis à jour. Les versions plus récentes de MongoDB (2.6+) renvoient une erreur si vous essayez de mettre à jour directement une collection système avec une modification non prise en charge, comme la tentative de création d'index supplémentaires.
Le oplog.rs
collection est définitivement "spéciale" car son utilisation prévue est uniquement pour la réplication. Les composants internes de la réplication font des hypothèses sur les opérations attendues pour l'oplog sur cette base. Par exemple, la réplication n'a besoin d'insérer que des entrées oplog -- contrairement à une collection plafonnée que vous pouvez créer vous-même, les entrées oplog ne sont jamais mis à jour.
Les applications sont censées lire l'oplog avec un curseur tailable si elles ont besoin de suivre de nouvelles entrées qui sont insérées dans l'oplog, ou de faire une recherche en utilisant $natural
commande.
Le didacticiel sur le curseur ajustable donne plus de détails sur l'utilisation, mais voici quelques points particuliers à noter :
- Les curseurs à queue n'utilisent pas d'index et renvoient les documents dans l'ordre naturel.
- Étant donné que les curseurs tailables n'utilisent pas d'index, l'analyse initiale de la requête peut être coûteuse ; mais, après avoir initialement épuisé le curseur, les récupérations ultérieures des documents nouvellement ajoutés sont peu coûteuses