Du skal bruge MongoDBs findAndModify-kommando. Med den kan du atomisk vælge og øge et felt.
db.seq.findAndModify({
query: {"_id": "users"},
update: {$inc: {"seq":1}},
new: true
});
Dette vil øge en tæller for users
samling, som du så kan tilføje til dokumentet inden indsættelse. Da det er atomart, behøver du ikke bekymre dig om raceforhold, der resulterer i modstridende ID'er.
Det er ikke så problemfrit som MySQL's auto_increment
flag, men du har normalt også mulighed for at angive din egen ID-fabrik i din Mongo-driver, så du kan implementere en fabrik, der bruger findAndModify til at øge og returnere ID'er transparent, hvilket resulterer i en meget mere MySQL-lignende oplevelse.
Ulempen ved denne tilgang er, at da hver indsættelse er afhængig af en skrivelås på din sekvenssamling, hvis du laver mange skrivninger, kan du ende med at få flaskehalse på det ret hurtigt. Hvis du bare vil garantere, at dokumenter i en samling er sorteret i indsættelsesrækkefølge, så kig på Afgrænsede samlinger.