Du måste använda MongoDB:s findAndModify-kommando. Med den kan du atomiskt välja och öka ett fält.
db.seq.findAndModify({
query: {"_id": "users"},
update: {$inc: {"seq":1}},
new: true
});
Detta kommer att öka en räknare för users
samling, som du sedan kan lägga till i dokumentet innan det infogas. Eftersom det är atomärt behöver du inte oroa dig för rasförhållanden som leder till motstridiga ID:n.
Det är inte lika sömlöst som MySQL:s auto_increment
flagga, men du har vanligtvis också möjlighet att ange din egen ID-fabrik i din Mongo-drivrutin, så att du kan implementera en fabrik som använder findAndModify för att öka och returnera ID på ett transparent sätt, vilket resulterar i en mycket mer MySQL-liknande upplevelse.
Nackdelen med detta tillvägagångssätt är att eftersom varje infogning är beroende av ett skrivlås på din sekvenssamling, om du skriver många gånger, kan du hamna i flaskhalsar på det ganska snabbt. Om du bara vill garantera att dokument i en samling sorteras i insättningsordning, titta då på Capped Collections.