Como não podemos arcar com o tempo de inatividade do usuário e a solução deve ser executada diariamente (embora em uma escala muito menor, pois estamos alcançando essa primeira execução), não pude usar a solução de Salvador Dali. Acabei agrupando meus registros a serem excluídos em grupos de 1k e enviando um comando BulkWrite contendo um
delete()
operação para cada registro. Em paralelo enviei n comandos BulkWrite para anular referências a cada registro, onde n é o número de coleções que referenciam os registros e onde cada solicitação BulkWrite tem 1k individual update()
operações, semelhantes ao delete()
. Isso funcionou razoavelmente rápido, então não tentei otimizar ainda mais ajustando o número de operações nos comandos BulkWrite.