Cóż, używając wspomnianego linku , wolałbym użyć podejście do zbierania liczników .
Podejście do zbierania liczników ma pewne wady, w tym:
- Zawsze generuje żądanie wielokrotności (dwa):jedno, aby uzyskać numer sekwencji, drugie, aby wykonać wstawienie przy użyciu identyfikatora otrzymanego za pośrednictwem sekwencji,
- Jeśli używasz funkcji shardingu mongodb, dokument odpowiedzialny za przechowywanie stanu licznika może być używany bardzo często i za każdym razem dotrze do tego samego serwera.
Jednak powinno być odpowiednie dla większości zastosowań.
Wspomniane przez Ciebie podejście ("optymistyczne pętla" ) nie powinien łamać IMO i nie domyślam się dlaczego masz z tym problem. Jednak nie polecam tego. Co się stanie, jeśli wykonasz kod na wielu klientach mongo, jeśli jeden ma duże opóźnienia, a inni nadal pobierają identyfikatory? Nie chciałbym napotkać tego rodzaju problemu... Ponadto są co najmniej dwa żądania na udaną operację, ale nie ma maksymalnej liczby ponownych prób przed sukcesem...