MongoDB non ha una funzionalità di incremento automatico integrata.
Crea una nuova raccolta per tenere traccia dell'ultimo valore di sequenza utilizzato per l'inserimento:
db.createCollection("counter")
Conterrà un solo record come:
db.counter.insert({_id:"mySequence",seq_val:0})
Crea una funzione JavaScript come:
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;
}
Per aggiornare tutti i valori già esistenti nella tua collezione esistente, questo dovrebbe funzionare (per il vuoto {}, puoi inserire le tue condizioni se vuoi aggiornare solo alcuni documenti):
db.myCollection.update({},
{$set:{'_id':getNextSequenceVal("mySequence")}},{multi:true})
Ora puoi inserire nuovi record nella tua raccolta esistente come:
db.myCollection.insert({
"_id":getNextSequenceVal("mySequence"),
"name":"ABC"
})