Będziesz musiał użyć polecenia findAndModify MongoDB. Dzięki niemu możesz niepodzielnie wybierać i zwiększać pole.
db.seq.findAndModify({
query: {"_id": "users"},
update: {$inc: {"seq":1}},
new: true
});
Spowoduje to zwiększenie licznika dla users
kolekcji, którą można następnie dodać do dokumentu przed wstawieniem. Ponieważ jest to atomowe, nie musisz się martwić o warunki wyścigowe, które skutkują sprzecznymi identyfikatorami.
To nie jest tak płynne jak auto_increment
MySQL flaga, ale zazwyczaj masz również możliwość określenia własnej fabryki identyfikatorów w sterowniku Mongo, więc możesz zaimplementować fabrykę, która używa findAndModify do inkrementacji i zwracania identyfikatorów w sposób przezroczysty, co daje znacznie bardziej podobne do MySQL doświadczenie.
Wadą tego podejścia jest to, że ponieważ każda wstawka jest zależna od blokady zapisu w twojej kolekcji sekwencji, jeśli robisz dużo zapisów, możesz dość szybko skończyć z wąskim gardłem. Jeśli chcesz tylko zagwarantować, że dokumenty w kolekcji są posortowane w kolejności umieszczania, spójrz na Ograniczone kolekcje.