U moet de opdracht findAndModify van MongoDB gebruiken. Hiermee kunt u atomair een veld selecteren en verhogen.
db.seq.findAndModify({
query: {"_id": "users"},
update: {$inc: {"seq":1}},
new: true
});
Dit verhoogt een teller voor de users
verzameling, die u vervolgens aan het document kunt toevoegen voordat u deze invoegt. Omdat het atomair is, hoef je je geen zorgen te maken over race-omstandigheden die resulteren in conflicterende ID's.
Het is niet zo naadloos als MySQL's auto_increment
vlag, maar je hebt meestal ook de mogelijkheid om je eigen ID-fabriek op te geven in je Mongo-stuurprogramma, zodat je een fabriek kunt implementeren die findAndModify gebruikt om ID's transparant te verhogen en terug te sturen, wat resulteert in een veel meer MySQL-achtige ervaring.
Het nadeel van deze aanpak is dat, aangezien elke invoeging afhankelijk is van een schrijfvergrendeling op je reeksverzameling, je als je veel schrijft, daar vrij snel een bottleneck in zou kunnen krijgen. Als je alleen maar wilt garanderen dat documenten in een collectie in invoegvolgorde worden gesorteerd, kijk dan bij Capped Collections.