MongoDB เพิ่มขึ้นโดยอัตโนมัติ
MongoDB มีไม่ได้เช่นเดียวกับความสามารถในการ SQL สำหรับการเจริญเติบโตโดยอัตโนมัติ _id MongoDB เป็น 12 ไบต์ที่ระบุระบบสร้างขึ้นโดยอัตโนมัติ
อย่างไรก็ตามในบางกรณีเราอาจจำเป็นต้องใช้คุณลักษณะการเจริญเติบโตมี objectid อัตโนมัติ
เพราะ MongoDB ไม่ใช้คุณสมบัตินี้เราสามารถตั้งโปรแกรมเพื่อให้บรรลุเราจะประสบความสำเร็จในสนามต่อไป _id เติบโตโดยอัตโนมัติเคาน์เตอร์คอลเลกชัน
คอลเลกชันการใช้งานเคาน์เตอร์
พิจารณาเอกสารผลิตภัณฑ์ต่อไปนี้ เราหวังว่าจะประสบความสำเร็จจาก 1,2,3,4 _id ฟิลด์ถึง n คุณลักษณะการเจริญเติบโตโดยอัตโนมัติ
{ "_id":1, "product_name": "Apple iPhone", "category": "mobiles" }
การทำเช่นนี้สร้างชุดของเคาน์เตอร์ค่าฟิลด์ลำดับอัตโนมัติสามารถยาว:
>db.createCollection("counters")
ตอนนี้เราใส่เอกสารต่อไปนี้เพื่อเคาน์เตอร์ในคอลเลกชันที่ใช้เป็นกุญแจสำคัญ ProductID:
{ "_id":"productid", "sequence_value": 0 }
ฟิลด์ sequence_value เป็นลำดับของค่าโดยการเจริญเติบโตโดยอัตโนมัติหลังจากที่
ใช้คำสั่งลำดับต่อไปนี้เพื่อแทรกเคาน์เตอร์เอกสารของคอลเลกชันนี้:
>db.counters.insert({_id:"productid",sequence_value:0})
การสร้างฟังก์ชั่นจาวาสคริ
ตอนนี้เราสร้างฟังก์ชัน getNextSequenceValue เป็นชื่อลำดับการป้อนข้อมูลลำดับที่ระบุจะมีการเติบโตขึ้นโดยอัตโนมัติโดยที่ 1 และส่งกลับค่าลำดับล่าสุด ในตัวอย่างในบทความชุดนี้เรียกว่า ProductID
>function getNextSequenceValue(sequenceName){ var sequenceDocument = db.counters.findAndModify( { query:{_id: sequenceName }, update: {$inc:{sequence_value:1}}, new:true }); return sequenceDocument.sequence_value; }
ใช้ฟังก์ชั่นจาวาสคริ
ต่อไปเราจะใช้ฟังก์ชั่ getNextSequenceValue เพื่อสร้างเอกสารใหม่และตั้งค่า _id เอกสารที่มีค่าลำดับอัตโนมัติกลับเป็น:
>db.products.insert({ "_id":getNextSequenceValue("productid"), "product_name":"Apple iPhone", "category":"mobiles"}) >db.products.insert({ "_id":getNextSequenceValue("productid"), "product_name":"Samsung S3", "category":"mobiles"})
ที่คุณสามารถดูเราจะใช้ฟังก์ชั่นในการตั้ง getNextSequenceValue ฟิลด์ _id
เพื่อตรวจสอบประสิทธิภาพของฟังก์ชั่นที่เราสามารถใช้คำสั่งต่อไปนี้เพื่ออ่านเอกสาร:
>db.products.find()
คำสั่งดังกล่าวจะทำการแสดงผลดังต่อไปนี้เราพบข้อมูล _id เป็นตัวการเจริญเติบโต:
{ "_id" : 1, "product_name" : "Apple iPhone", "category" : "mobiles"} { "_id" : 2, "product_name" : "Samsung S3", "category" : "mobiles" }