Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Selected Reading
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
-
$incatomically increments the sequence value by 1 -
new:truereturns 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.
Advertisements
