Isso está acontecendo porque, embora
db.repo.remove({"date" : {"$lt" : new Date(1362096000000)}})
parece que um único comando está realmente operando em muitos documentos - tantos quantos satisfaçam essa consulta.
Quando você usa a replicação, cada operação de alteração deve ser gravada em uma coleção especial no
local
banco de dados chamado oplog.rs
- oplog para breve. O oplog deve ter uma entrada para cada documento excluído e cada uma dessas entradas precisa ser aplicada ao oplog em cada secundário antes que ele também possa excluir o mesmo registro.
Uma coisa que posso sugerir que você considere é índices TTL - eles excluirão documentos "automaticamente" com base na data/valor de expiração que você definir - dessa forma, você não terá uma exclusão massiva e, em vez disso, poderá distribuir a carga mais ao longo do tempo.