MongoDB har ikke en indbygget auto-increment-funktionalitet.
Opret en ny samling for at holde styr på den sidste sekvensværdi, der blev brugt til indsættelse:
db.createCollection("counter")
Det vil kun indeholde én rekord som:
db.counter.insert({_id:"mySequence",seq_val:0})
Opret en JavaScript-funktion som:
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;
}
For at opdatere alle de allerede eksisterende værdier i din eksisterende samling, burde dette fungere (For den tomme {} kan du placere dine betingelser, hvis du kun vil opdatere nogle dokumenter):
db.myCollection.update({},
{$set:{'_id':getNextSequenceVal("mySequence")}},{multi:true})
Nu kan du indsætte nye poster i din eksisterende samling som:
db.myCollection.insert({
"_id":getNextSequenceVal("mySequence"),
"name":"ABC"
})