sql >> Base de Datos >  >> NoSQL >> MongoDB

El índice en el campo ts en oplog.rs no está actualizado

Como ha descubierto, los índices secundarios no son compatibles con las colecciones del sistema, como local.oplog.rs y *.system.profile . En MongoDB 2.4 y versiones anteriores, parecería que los índices se crearon, pero en realidad nunca se actualizaron. Las versiones más recientes de MongoDB (2.6+) devuelven un error si intenta actualizar directamente una colección del sistema con un cambio no admitido, como intentar crear índices adicionales.

El oplog.rs La colección es definitivamente "especial" porque su uso previsto es solo para la replicación. Las partes internas de replicación hacen algunas suposiciones sobre las operaciones esperadas para el registro de operaciones sobre esta base. Por ejemplo, la replicación solo necesita insertar entradas de registro de operación; a diferencia de una colección limitada que puede crear usted mismo, las entradas de registro de operación nunca actualizado.

Se espera que las aplicaciones lean el registro de operaciones con un cursor rastreable si necesitan seguir nuevas entradas que se insertan en el registro de operaciones, o hacer una búsqueda usando $natural orden.

El tutorial del cursor adaptable entra en más detalles sobre el uso, pero algunos puntos particulares a tener en cuenta son:

  • Los cursores adaptables no usan índices y devuelven documentos en orden natural.
  • Debido a que los cursores rastreables no usan índices, el escaneo inicial de la consulta puede ser costoso; pero, después de agotar inicialmente el cursor, las recuperaciones posteriores de los documentos recién agregados son económicas