Como você descobriu, índices secundários não são suportados em coleções de sistema como
local.oplog.rs
e *.system.profile
. No MongoDB 2.4 e anteriores, os índices parecem ter sido criados, mas nunca foram atualizados. Versões mais recentes do MongoDB (2.6+) retornam um erro se você tentar atualizar diretamente uma coleção do sistema com uma alteração não suportada, como tentar criar índices adicionais. O
oplog.rs
coleção é definitivamente "especial" porque seu uso pretendido é apenas para replicação. Os internos de replicação fazem algumas suposições sobre as operações esperadas para o oplog nessa base. Por exemplo, a replicação só precisa inserir entradas de oplog -- ao contrário de uma coleção limitada que você mesmo pode criar, as entradas de oplog nunca Atualizada. Espera-se que os aplicativos leiam o oplog com um cursor tailable se precisarem seguir novas entradas inseridas no oplog ou fazer uma busca usando
$natural
pedido. O tutorial do cursor tailable apresenta mais detalhes sobre o uso, mas alguns pontos específicos a serem observados são:
- Cursores de tailable não usam índices e retornam documentos em ordem natural.
- Como os cursores tailable não usam índices, a varredura inicial da consulta pode ser cara; mas, depois de esgotar inicialmente o cursor, as recuperações subsequentes dos documentos recém-adicionados são baratas