Based on: https://www.tutorialspoint.com/mongodb/mongodb_autoincrement_sequence.htm
-
Create collection to store sequence numbers:
db.createCollection("counters"); -
Initialize the sequence:
db.counters.insert({_id:"partySeq",sequence_value:-1}); -
Define function to get next sequence value:
function getNextSequenceValue(sequenceName){ var sequenceDocument = db.counters.findAndModify({ query:{_id: sequenceName }, update: {$inc:{sequence_value:1}}, new:true }); return sequenceDocument.sequence_value; }; -
Create index on seq field:
db.parties.createIndex({seq:1},{background:true, sparse:true, unique: true}); -
Enumerate the collection and assign sequence numbers:
db.parties.find().sort({_id:1}).forEach( function(p){ db.parties.update({_id: p._id}, {$set:{seq: getNextSequenceValue("partySeq")}}) } );