MongoDB n'a pas de fonctionnalité d'auto-incrémentation intégrée.
Créez une nouvelle collection pour garder une trace de la dernière valeur de séquence utilisée pour l'insertion :
db.createCollection("counter")
Il ne contiendra qu'un seul enregistrement en tant que :
db.counter.insert({_id:"mySequence",seq_val:0})
Créez une fonction JavaScript en tant que :
function getNextSequenceVal(seq_id){
// find record with id seq_id and update the seq_val by +1
var sequenceDoc = db.counter.findAndModify({
query:{_id: seq_id},
update: {$inc:{seq_val:1}},
new:true
});
return sequenceDoc.seq_val;
}
Pour mettre à jour toutes les valeurs déjà existantes dans votre collection existante, cela devrait fonctionner (Pour les {} vides, vous pouvez placer vos conditions si vous souhaitez mettre à jour certains documents uniquement) :
db.myCollection.update({},
{$set:{'_id':getNextSequenceVal("mySequence")}},{multi:true})
Vous pouvez désormais insérer de nouveaux enregistrements dans votre collection existante en tant que :
db.myCollection.insert({
"_id":getNextSequenceVal("mySequence"),
"name":"ABC"
})