http://www.mongodb.org /display/DOCS/How+to+Make+an+Auto+Incrementing+Field
A primeira abordagem é manter os contadores em um documento paralelo:
A outra abordagem é fazer um loop otimista e lidar com o código de erro de chave dup de 11000, continuando e incrementando o id para o caso extremo de colisões. Isso funciona bem, a menos que haja gravações de alta simultaneidade em uma coleção específica.
Mas esteja ciente do aviso nessa página:
Outras coisas a considerar:
- Timestamp - único longo, mas não incrementado (baseado na época)
- Abordagem híbrida - os aplicativos não precisam necessariamente escolher uma opção de armazenamento.
- Crie seu mecanismo de identificação com base em itens como cliente, partes de data/hora etc... que você gera e lida com colisões. Dependendo do esquema, as colisões podem ser muito menos prováveis. Não necessariamente incrementando, mas é único e tem um padrão legível bem definido.