Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

ปรับลำดับลำดับ (Sequence) ใน MongoDB ด้วย findAndModify

เพื่อปรับลำดับ (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();

ผลลัพธ์: