Não há como "agradar" os trabalhos de RM que você está executando - eles renderão etc. mas no final (especialmente se você tiver índices mal escolhidos) você impactará o primário removendo seu conjunto de trabalho da RAM , causando contenção de disco IO, etc. Assim, eu recomendaria definitivamente otimizar seus índices para evitar isso o máximo possível.
Em termos de aliviar o fardo, você pode executar trabalhos de RM na memória em secundários em vez de no primário. Tudo o que não requer a saída para um banco de dados pode ser executado dessa maneira (não há como escrever em um secundário).
Se isso não for uma opção, então, outra abordagem que vi inclui disponibilizar os dados para um cluster "analítico" especificamente para executar as tarefas de MR, deixando os bancos de dados de produção intactos. Existem várias abordagens a serem seguidas para manter o segundo cluster atualizado, a partir de instantâneos de sistemas de arquivos e outras técnicas de tipos de lote, até o uso de mongooplog ou um aplicativo personalizado e cursores disponíveis para replicar.
A outra abordagem que você poderia adotar seria dividir para aumentar sua capacidade em suas primárias. Se você estiver indo para a estrada, certifique-se que você está executando pelo menos 2.2 (2.2.2 a partir de escrever isso), o suporte para MR sharded foi melhorado consideravelmente com o release 2.2