การดำเนินการ CRUD ใน MongoDB: บทช่วยสอนพร้อมตัวอย่าง
เผยแพร่แล้ว: 2020-02-05ด้วยการพัฒนาอย่างต่อเนื่องของเว็บ ตอนนี้เราได้เห็นแล้วว่า MongoDB และฐานข้อมูลอ็อบเจ็กต์เอกสารอื่น ๆ กลายเป็นทางเลือกแทนฐานข้อมูลที่ใช้ SQL แบบธรรมดาได้อย่างไร มีข้อดีหลายประการที่ฐานข้อมูลอ็อบเจ็กต์เอกสารเหล่านี้มีเหนือฐานข้อมูล SQL และข้อดีที่โดดเด่นที่สุดจากประโยชน์ทั้งหมดเหล่านี้ ได้แก่ ความสามารถในการปรับขนาดและความคล่องตัว
สิ่งสำคัญคือต้องทราบว่าข้อมูลใน MongoDB ถูกจัดเก็บในรูปแบบเอกสาร JSON (BSON) ที่เข้ารหัสแบบไบนารี รูปแบบนี้อาจมีข้อกำหนดในการเก็บอาร์เรย์ของเอกสารที่ฝังไว้หรือสำหรับค่าเรื่องนั้น เอกสารสร้างเร็กคอร์ดใน MongoDB ซึ่งเป็นโครงสร้างที่สร้างขึ้นจากค่าคู่และฟิลด์
ให้เราพูดถึงการสร้าง อัปเดต ดึงข้อมูล และลบการดำเนินการหรือการดำเนินการ CRUD ใน MongoDB ฟังก์ชันเหล่านี้สามารถจำแนกได้กว้างๆ ว่าเป็นฟังก์ชันแก้ไขข้อมูลใน MongoDB สามารถใช้สำหรับคอลเลกชันเดียวเท่านั้น Insert เป็นฟังก์ชันใน MongoDB ที่สามารถใช้เพิ่มข้อมูลลงในฐานข้อมูลได้
สารบัญ
รายชื่อปฏิบัติการ CRUD ใน MongoDB
1. การสร้างเอกสาร
วัตถุถูกสร้างขึ้นโดยใช้ MongoDB อย่างไร MongoDB ใช้ BSON ซึ่งเป็นตัวแทนไบนารีของ JSON สำหรับการจัดเก็บ ดังนั้นจึงค่อนข้างง่ายที่จะเข้าใจว่าเมธอดที่ใช้ในการดำเนินการต่างๆ ในฐานข้อมูลมีบางอย่างที่เกี่ยวข้องกับ JavaScript ให้เราสร้างผู้ใช้และคอลเลกชันของผู้ใช้ สิ่งสำคัญที่ควรทราบคือตารางใน SQL เทียบเท่ากับคอลเล็กชันใน MongoDB
db.users.save({name:”Mike”, job:”doctor”,email:”[email protected]”})
ตัวอย่างนี้ใช้ MongoDB save() เพื่อบันทึกข้อมูลลงในคอลเลกชัน
2. การใส่เอกสาร
- Batch insert : ฟังก์ชันนี้อนุญาตให้เพิ่มรายการเอกสารไปยังฐานข้อมูลได้ในเวลาเดียวกัน ในช่วงเวลาหนึ่งๆ แบทช์สามารถมีเอกสารได้หลายร้อยหรือหลายพันฉบับ ด้วยความสามารถในการแทรกเอกสารหลายชุด ฟังก์ชันนี้จึงทำงานได้เร็วกว่าฟังก์ชันแทรกอื่นๆ มาก การแทรกแบบกลุ่มไม่ต้องการให้คุณส่งคำขอแต่ละรายการสำหรับเอกสารหลายร้อยหรือหลายพันฉบับ แทนที่จะทำงานเป็นคำขอ Transmission Control Protocol (TCP) หนึ่งคำขอ เวลาที่ใช้ระหว่างเม็ดมีดจะน้อยลงอย่างเห็นได้ชัด เนื่องจากไม่มีกิจกรรมการประมวลผลส่วนหัวที่เกี่ยวข้อง เอกสารทุกฉบับที่ต้องแทรกมีส่วนหัวที่สื่อถึงการดำเนินการที่จำเป็นต้องดำเนินการไปยังฐานข้อมูล ส่วนใหญ่ การแทรกแบบกลุ่มใช้เพื่อเก็บข้อมูลเซ็นเซอร์และบันทึกเซิร์ฟเวอร์
- Mongoimport : Mongoimport เป็นเครื่องมือบรรทัดคำสั่งที่ใช้แทนการแทรกแบตช์ไปยังข้อมูลสำคัญจาก MySQL, Oracle หรือระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) อื่นๆ มีบางครั้งที่คุณอาจต้องเปลี่ยนแปลงเอกสาร – เพิ่ม ID ที่กำหนดเอง – ก่อนที่จะจัดเก็บไว้ใน MongoDB สิ่งสำคัญอีกประการหนึ่งที่คุณควรทราบคือ MongoDB ยอมรับเฉพาะข้อความที่หนักถึง 16 MB เท่านั้น ดังนั้นการแทรกแบบกลุ่มจึงจำกัดจำนวนข้อความที่สามารถมีได้
- การแทรกจำนวนมากแบบไม่เรียงลำดับ : ในฟังก์ชันนี้ MongoDB จะเขียนการดำเนินการโดยไม่ทำตามลำดับใดๆ ในกรณีที่เกิดข้อผิดพลาดขึ้น จะดำเนินการเขียนต่อไปโดยไม่หยุดชะงัก MongoDB สร้างกลุ่มของการดำเนินการที่ไม่เรียงลำดับในขณะที่ดำเนินการ MongoDB ยังสามารถแสวงหาการเพิ่มประสิทธิภาพโดยการจัดลำดับการดำเนินการที่ระบุไว้ใหม่ก่อนดำเนินการ ดังนั้น แอปพลิเคชันจึงไม่จำเป็นต้องพึ่งพาลำดับเมื่อพิจารณาถึงฟังก์ชันนี้สำหรับการแทรกจำนวนมาก Bulk.getOperations() สามารถใช้เพื่อดูว่า MongoDB จัดกลุ่มชุดของการดำเนินการอย่างไรแล้วดำเนินการ คำสั่งนี้สามารถใช้เพื่อเพิ่มเอกสารสามฉบับพร้อมกัน แต่ไม่มีคำสั่งใดๆ
- คำสั่งแทรกจำนวนมาก: ในฟังก์ชันนี้ MongoDB จะทำตามลำดับเมื่อเขียนการดำเนินการ ข้อผิดพลาดระหว่างการดำเนินการเขียนส่งผลให้ MongoDB ไม่ดำเนินการเขียนอื่นๆ การดำเนินการที่สั่งซื้อจะถูกจัดกลุ่มโดยพิจารณาถึงความต่อเนื่องและประเภท การดำเนินการที่ได้รับคำสั่งที่อยู่ติดกันเป็นของคลาสเดียวกันจะถูกจัดกลุ่ม
F หรืออินสแตนซ์ หากรายการที่สั่งซื้อมีการดำเนินการแทรกหนึ่งครั้งตามด้วยการดำเนินการลบตามด้วยการดำเนินการอัปเดตสองครั้ง MongoDB จะสร้างกลุ่มสามกลุ่มเพื่อสแต็กสิ่งเหล่านี้ กลุ่มที่หนึ่งจะประกอบด้วยการดำเนินการแทรกหนึ่งรายการ กลุ่มที่สองจะมีการดำเนินการลบหนึ่งครั้ง กลุ่มที่สามจะรวมการดำเนินการอัปเดตทั้งสองเข้าด้วยกัน

คาดว่า MongoDB รุ่นต่อๆ ไปจะจัดการกับพฤติกรรมนี้อย่างเหมาะสม รายชื่อกลุ่มที่สั่งซื้อแต่ละกลุ่มมีการดำเนินการได้ไม่เกิน 1,000 รายการ ในกรณีที่ตัวเลขเกินขีดจำกัดสูงสุดนั้น MongoDB จะสร้างกลุ่มที่เล็กกว่า 1,000 การดำเนินการหรือน้อยกว่า เพื่อให้เป็นไปตามขีดจำกัดนี้ ดังนั้น หากมีการดำเนินการจำนวนมากที่สั่งซื้อจำนวน 7000 รายการ จะมีเจ็ดกลุ่ม โดยแต่ละกลุ่มประกอบด้วยการดำเนินการเป็นกลุ่มจำนวน 1,000 รายการ หากต้องการดูวิธีการจัดกลุ่มและการดำเนินการ ขั้นแรกให้รันคำสั่งการแทรกจำนวนมาก แล้วใช้คำสั่ง Bulk.getOperations คำสั่งนี้สามารถใช้เพื่อเพิ่มเอกสารสามชุดตามลำดับ

3. เรียกค้น/อ่านเอกสาร
ทุกคำถามใน MongoDB มุ่งไปที่เอกสารเฉพาะ MongoDB ระบุเอกสารตามเงื่อนไขที่กำหนดไว้ในแบบสอบถาม จากนั้นส่งคืนเอกสารเหล่านั้นไปยังปลายทางที่ต้องการ คิวรีการเรียกเอกสารสามารถมีการคาดการณ์ที่กล่าวถึงเงื่อนไขหรือเกณฑ์ที่ตรงกับเขตข้อมูลของเอกสารที่ต้องการส่งคืน
สามารถแก้ไขแบบสอบถามเพื่อใส่การข้าม ขีดจำกัด และลำดับการจัดเรียง
ให้เราพูดถึงวิธีการระบุเงื่อนไขความเท่าเทียมกัน ใช้คำสั่ง findOne() เพื่อระบุระเบียนแรกของเอกสาร หากต้องการแสดงผลในรูปแบบที่เหมาะสม คุณสามารถใช้วิธีสวยได้
ใช้เคียวรี db.items.find().pretty() เพื่อระบุเอกสารทั้งหมดที่แสดงรายการในคอลเล็กชันและแสดงเอกสารทั้งหมดในรูปแบบมาตรฐาน คุณสามารถใช้คิวรีว่างเพื่อเลือกเอกสารทั้งหมดได้ – db.items.find( {} ) – คิวรีนี้มีอนุประโยคคิวรีว่างที่ส่วนท้าย ดังนั้นคิวรีจะระบุเอกสารทั้งหมดที่อยู่ในคอลเล็กชัน
การไม่ระบุวิธีการค้นหาด้วยเอกสารการสืบค้นและการใช้การสืบค้นที่ว่างเปล่าจะทำให้เกิดผลลัพธ์เดียวกัน ดังนั้น db.items.find( {} ) และ db.items.find() เคียวรีจึงเทียบเท่ากันในแง่ของผลลัพธ์ที่ใช้
คุณสามารถจัดการคิวรีและใช้วิธีเคอร์เซอร์คิวรีได้ ในขณะที่วิธีการนับช่วยให้คุณค้นหาจำนวนเอกสารในคอลเลกชั่นที่ตรงกับคิวรีของคุณได้ db.items.count()
4. การอัพเดทเอกสาร
คุณต้องใช้เมธอด update() เพื่ออัปเดตเอกสารใน MongoDB วิธีการอัปเดตประกอบด้วยองค์ประกอบที่สำคัญสองประการ – แบบสอบถามและการอัปเดต พารามิเตอร์การสืบค้นมาก่อนตามด้วยพารามิเตอร์การอัพเดท นี่คือตัวอย่าง
db.users.update({ชื่อ:”Mike”}, {อายุ: 32})
อย่างไรก็ตาม นี่ไม่ใช่วิธีที่ถูกต้องในการอัปเดตคู่ค่า ซึ่งในกรณีนี้คืออายุ ด้วยวิธีนี้ คุณจะเขียนทับทุกอย่างในเอกสาร สิ่งเดียวที่จะยังคงอยู่ในยุคนั้น ดังนั้น เมื่อเราต้องอัปเดตคู่ค่าเดียวในเอกสารทั้งหมด เราจำเป็นต้องใช้คำหลักสองสามคำ
db.users.update ({ชื่อ: “ไมค์”}, { $set: { อายุ: 28}})

นี้จะไม่เขียนทับอะไร คุณจะเก็บข้อมูลทั้งหมดที่เอกสารมี เฉพาะค่าอายุเท่านั้นที่จะได้รับการอัปเดต
5. การนำเอกสารออก
ใช้วิธีการลบ – db.courses.remove() – เพื่อลบเอกสารออกจากคอลเลกชัน คำสั่งนี้จะลบเอกสารทั้งหมดออกจากคอลเล็กชันที่กำหนด สิ่งที่จะไม่ลบคือดัชนีและตัวคอลเลกชันเอง ในบางครั้ง คำสั่งเอาออกสามารถใช้แบบสอบถามเป็นพารามิเตอร์ได้ หากคุณต้องการลบเอกสารที่ตรงกับเกณฑ์ที่กล่าวถึงในแบบสอบถาม ให้ใช้คำสั่ง db.items.remove({"item": “Pen”)
ใช้คำสั่ง db.items.remove({” item” : “Bag},1) เพื่อลบเอกสารเพียงชุดเดียวออกจากคอลเลกชัน หากต้องการลบเอกสาร คอลเล็กชัน และดัชนีทั้งหมด ให้ใช้คำสั่ง db.courses.drop() (วิธีดรอป)
บทสรุป
หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติมเกี่ยวกับ Big Data โปรดดูที่ PG Diploma in Software Development Specialization in Big Data program ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีกรณีศึกษาและโครงการมากกว่า 7 กรณี ครอบคลุมภาษาและเครื่องมือในการเขียนโปรแกรม 14 รายการ เวิร์กช็อป ความช่วยเหลือด้านการเรียนรู้และจัดหางานอย่างเข้มงวดมากกว่า 400 ชั่วโมงกับบริษัทชั้นนำ
เรียนรู้ หลักสูตรการพัฒนาซอฟต์แวร์ ออนไลน์จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว