No GridFS você não está removendo/excluindo um único documento, mas na verdade um monte de documentos (os arquivos são divididos em partes e cada parte é um documento separado). Isso significa que substituir um arquivo simplesmente não é possível de maneira atômica.
O que você pode fazer em vez disso é:
- insira um novo arquivo com um novo nome
- depois que isso aconteceu (use a réplica reconhecida write-concern), atualize todas as referências ao arquivo antigo para apontar para o novo
- depois de receber uma confirmação para isso, você pode excluir o arquivo antigo
GridFS é uma espécie de recurso hackish. Muitas vezes, é melhor usar um servidor de arquivos separado com um sistema de arquivos real para armazenar o conteúdo do arquivo e armazenar apenas os metadados no MongoDB.