เพื่อปรับลำดับ (Sequence) ให้ใช้เมธอด findAndModify() ซึ่งทำการค้นหาและอัปเดตแบบ Atomic
สร้างคอลเลกชัน demo261 พร้อมเอกสาร _id=100:
> db.demo261.insertOne({_id:100,Name:"Chris"});
{ "acknowledged" : true, "insertedId" : 100 }
แสดงเอกสาร:
> db.demo261.find();
ผลลัพธ์:
สร้างคอลเลกชัน demo262 สำหรับเก็บค่า Sequence แล้วสร้างฟังก์ชัน getNext() ใช้ findAndModify เพื่อเพิ่ม sequence_value ทีละ 1 และคืนค่าใหม่:
> db.demo262.insert({_id:"newId",sequence_value:0}) WriteResult({ "nInserted" : 1 }) > function getNext(sName){ ... var d= db.demo262.findAndModify({ ... query:{_id: sName}, ... update: {$inc:{sequence_value:1}}, ... new:true ... }); ... return d.sequence_value; ... }เรียกใช้ฟังก์ชัน getNext() เพื่อสร้าง _id ใหม่อัตโนมัติ แล้ว insert เข้า demo261:
> db.demo261.insert({ "_id":getNext("newId"), "Name":"Chris" }) WriteResult({ "nInserted" : 1 }) > db.demo261.insert({ "_id":getNext("newId"), "Name":"Bob" }) WriteResult({ "nInserted" : 1 })แสดงเอกสารใน demo261 อีกครั้ง - มี _id ใหม่ 1 และ 2 จาก Sequence:
> db.demo261.find();ผลลัพธ์: