Để tạo sequence tự động tăng trong MongoDB, sử dụng findAndModify() trên collection counter.
Tạo collection demo261 và counter demo262:
> db.demo261.insertOne({_id:100,Name:"Chris"});
{ "acknowledged" : true, "insertedId" : 100 }
> db.demo261.find();
Tạo counter document với sequence_value=0:
> db.demo262.insert({_id:"newId",sequence_value:0}) WriteResult({ "nInserted" : 1 })Hàm JavaScript getNext() sử dụng findAndModify atomic increment:
> function getNext(sName){ ... var d= db.demo262.findAndModify({ ... query:{_id: sName}, ... update: {$inc:{sequence_value:1}}, ... new:true ... }); ... return d.sequence_value; ...}Gọi hàm để sinh _id tự động cho tài liệu mới:
> db.demo261.insert({ "_id":getNext("newId"), "Name":"Chris" }) WriteResult({ "nInserted" : 1 }) > db.demo261.insert({ "_id":getNext("newId"), "Name":"Bob" }) WriteResult({ "nInserted" : 1 })Kết quả: _id tự động tăng 1, 2 (bên cạnh _id=100 ban đầu):
> db.demo261.find();