Bem, usando o link que você mencionou , prefiro usar o abordagem de cobrança de contadores .
A abordagem de cobrança de contadores tem algumas desvantagens, incluindo:
- Sempre gera solicitação múltipla (dois):um para obter o número da sequência, outro para fazer a inserção usando o id obtido pela sequência,
- Se você estiver usando os recursos de fragmentação do mongodb, um documento responsável por armazenar um estado de contador pode ser muito usado e, a cada vez, chegará ao mesmo servidor.
No entanto, deve ser apropriado para a maioria dos usos.
A abordagem que você mencionou ("o otimista laço" ) não deve quebrar o IMO, e não acho por que você tem um problema com isso. No entanto não recomendo. O que acontece se você executar o código em vários clientes mongo, se um tiver muita latência e outros continuarem recebendo IDs? Eu não gostaria de encontrar esse tipo de problema... Além disso, há pelo menos duas solicitações por operação bem-sucedida, mas não há um máximo de tentativas antes de um sucesso...