Nå, ved at bruge det link, du nævnte , jeg vil hellere bruge indsamlingstilgang til tællere .
Indsamlingsmetoden med tællere har nogle ulemper, herunder:
- Den genererer altid multiple anmodninger (to):en for at få sekvensnummeret, en anden til at udføre indsættelsen ved hjælp af det id, du fik via sekvensen,
- Hvis du bruger sharding-funktioner i mongodb, kan et dokument, der er ansvarligt for lagring af en tællertilstand, blive brugt meget, og hver gang vil det nå den samme server.
Det burde dog være passende til de fleste anvendelser.
Den tilgang, du nævnte ("den optimistiske sløjfe" ) bør ikke bryde IMO, og jeg gætter ikke på, hvorfor du har et problem med det. Jeg vil dog ikke anbefale det. Hvad sker der, hvis du udfører koden på flere mongo-klienter, hvis én har meget latency, og andre bliver ved med at tage ID'er? Jeg vil ikke støde på denne form for problemer... Desuden er der mindst to anmodninger pr. succesfuld operation, men ikke et maksimum af genforsøg før en succes...