A resposta correta, depois de muito sangue e suor, é a seguinte:
- Para preferir todas as leituras/consultas acerte os secundários, apenas slaveOk() precisa ser definido
- Para preferir apenas leituras selecionadas, use secundários, não defina slaveOk() e use queryNonPrimary() em vez disso, por consulta
Também é uma boa prática definir uma preocupação de gravação apropriada ao usar conjuntos de réplicas, assim:
mongo.setWriteConcern(WriteConcern.REPLICAS_SAFE);