Budete muset použít příkaz findAndModify MongoDB. S ním můžete atomicky vybrat a zvýšit pole.
db.seq.findAndModify({
query: {"_id": "users"},
update: {$inc: {"seq":1}},
new: true
});
Tím se zvýší počítadlo pro users
kolekce, kterou pak můžete přidat do dokumentu před vložením. Vzhledem k tomu, že je atomární, nemusíte se starat o podmínky závodu způsobující konfliktní ID.
Není to tak bezproblémové jako auto_increment
MySQL příznak, ale obvykle máte také možnost specifikovat vlastní továrnu ID v ovladači Mongo, takže byste mohli implementovat továrnu, která používá findAndModify k transparentnímu zvyšování a vracení ID, což má za následek mnohem více prostředí podobné MySQL.
Nevýhodou tohoto přístupu je, že vzhledem k tomu, že každý insert je závislý na zámku pro zápis ve vaší kolekci sekvencí, pokud provádíte hodně zápisů, můžete skončit velmi rychle úzkým hrdlem. Chcete-li pouze zaručit, že dokumenty ve sbírce budou seřazeny podle pořadí vložení, podívejte se na Limitované kolekce.