Modify sequence in MongoDB

To modify a sequence in MongoDB, use findAndModify() method to atomically increment a counter value. This approach creates auto-incrementing sequence numbers for document IDs.

Syntax

db.collection.findAndModify({
    query: {_id: "sequenceName"},
    update: {$inc: {sequence_value: 1}},
    new: true
});

Create Sample Data

First, create a collection with an initial document ?

db.demo261.insertOne({_id:100, Name:"Chris"});
{ "acknowledged" : true, "insertedId" : 100 }
db.demo261.find();
{ "_id" : 100, "Name" : "Chris" }

Example: Create Sequence Function

Create a sequence counter document and function to generate incremental IDs ?

db.demo262.insert({_id:"newId", sequence_value:0});

function getNext(sName){
    var d = db.demo262.findAndModify({
        query: {_id: sName},
        update: {$inc: {sequence_value: 1}},
        new: true
    });
    return d.sequence_value;
}
WriteResult({ "nInserted" : 1 })

Use Sequence Function

Call the function to generate sequential IDs for new documents ?

db.demo261.insert({
    "_id": getNext("newId"),
    "Name": "Chris"
});

db.demo261.insert({
    "_id": getNext("newId"),
    "Name": "Bob"
});
WriteResult({ "nInserted" : 1 })
WriteResult({ "nInserted" : 1 })

Verify Result

db.demo261.find();
{ "_id" : 100, "Name" : "Chris" }
{ "_id" : 1, "Name" : "Chris" }
{ "_id" : 2, "Name" : "Bob" }

How It Works

  • $inc atomically increments the sequence value by 1
  • new:true returns the updated document with the new sequence value
  • The function wraps the logic for reusable sequence generation

Conclusion

Use findAndModify() with $inc to create atomic sequence counters in MongoDB. This approach ensures unique, incrementing ID values across concurrent operations.

Updated on: 2026-03-15T02:09:14+05:30

340 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements