ตัวดำเนินการ MongoDB $Min

Taw Danein Kar Mongodb Min



หากคุณไม่ใช่ผู้ใช้ฐานข้อมูลหรือการเขียนโปรแกรมรายใหม่ คุณต้องลองใช้โปรแกรมและแบบสอบถามที่ใช้ตัวดำเนินการเปรียบเทียบ เช่น มากกว่า น้อยกว่า เท่ากับ ฯลฯ ใน MongoDB ซึ่งเราใช้ตัวดำเนินการ '$set' เพื่อ อัปเดตเรกคอร์ดฟิลด์เฉพาะหรือเพิ่มเรกคอร์ดใหม่ลงในฐานข้อมูล เรายังสามารถบรรลุผลลัพธ์เดียวกันได้โดยใช้ตัวดำเนินการเปรียบเทียบ เช่น “$min” และ “$max” ใน MongoDB สามารถใช้โอเปอเรเตอร์ “$min” ในการสืบค้นฟังก์ชันจำนวนมากเพื่ออัปเดตฟิลด์เฉพาะเมื่อค่าใหม่น้อยกว่าค่าที่แทรกไปแล้ว นอกจากนี้ยังสามารถใช้เพื่อจัดกลุ่มและแสดงบันทึกของคอลเลกชันตามลำดับเฉพาะ คู่มือนี้จะช่วยคุณด้วยวิธีต่างๆ ในการปลดโอเปอเรเตอร์ “$min” ใน MongoDB

ตัวอย่างที่ 1:

เริ่มต้นด้วยภาพประกอบแรก เราสาธิตการใช้ตัวดำเนินการ '$min' ใน MongoDB เพื่ออัปเดตระเบียนที่แทรกไว้แล้วโดยใช้เครื่องมือเชลล์ MongoDB ในระบบ Windows ดังนั้น คุณต้องมีเรกคอร์ดบางอย่างที่เพิ่มลงในฐานข้อมูลของคุณแล้ว ดังนั้นเราจึงใช้คิวรีฟังก์ชัน insertMany() เพื่อเพิ่มระเบียนทั้งหมด 5 รายการในคอลเล็กชัน 'ลำดับ' ของฐานข้อมูล 'ทดสอบ' แต่ละระเบียนที่แทรกซึ่งแสดงในภาพประกอบต่อไปนี้มีทั้งหมด 4 ฟิลด์ – รหัส ชื่อเรื่อง ราคาขาย และภาษี ข้อมูล 5 บันทึกนี้ถูกแทรกสำเร็จตามเอาต์พุตที่แนบมา:

ทดสอบ > db.order.insertMany ( [ { 'รหัส' :01, 'ชื่อ' : 'สบู่' , 'ลดราคา' : 500 , 'ภาษี' : 24 } ,
... { 'รหัส' :02, 'ชื่อ' : 'แชมพู' , 'ลดราคา' : 700 , 'ภาษี' : 27 } ,
... { 'รหัส' :03, 'ชื่อ' : 'ผงซักฟอก' , 'ลดราคา' : 400 , 'ภาษี' : 22 } ,
... { 'รหัส' :04, 'ชื่อ' : 'น้ำหอม' , 'ลดราคา' : 900 , 'ภาษี' : 30 } ,
... { 'รหัส' :05, 'ชื่อ' : 'หมอก' , 'ลดราคา' : 850 , 'ภาษี' : 27 } ] )







ได้เวลาดูบันทึกที่แทรกในฐานข้อมูล 'ทดสอบ' คุณต้องละทิ้งเมธอด “find()” ควบคู่ไปกับเมธอด “forEach” โดยใช้ “printjson” เป็นอาร์กิวเมนต์ในคำสั่ง “db” การใช้ชุดสะสมชื่อ 'คำสั่ง' เรามีบันทึกที่แสดงบนหน้าจอ



ทดสอบ > db.order.find ( ) .แต่ละ ( พิมพ์สัน )



ถึงเวลาแล้วที่จะใช้ตัวดำเนินการ '$min' ในการสืบค้นฟังก์ชัน 'updateOne' เพื่ออัปเดตระเบียนเดียวจากคอลเลกชัน 'คำสั่งซื้อ' ที่เพิ่งสร้างขึ้น ฟิลด์ 'id' ถูกใช้เป็นตัวระบุเฉพาะเพื่ออัปเดตบันทึกเฉพาะจากฐานข้อมูล ในขณะที่ใช้โอเปอเรเตอร์ '$min' กับฟิลด์ 'ราคาขาย' เพื่ออัปเดตค่าเป็น 600 หากมีค่าน้อยกว่าค่าที่แทรกไปแล้ว ข้อความเอาต์พุตแสดงว่าการค้นหาสำเร็จแต่ไม่มีการอัพเดตใดๆ





ทดสอบ > db.order.updateOne ( { รหัส: 3 } , { $ นาที : { ลดราคา: 600 } } )

เหตุผลที่ไม่มีการอัปเดตฟิลด์ “ราคาขาย” ของเรกคอร์ดที่ 3 คือฟิลด์นั้นมีค่าเป็น “400” ซึ่งน้อยกว่า “600″ ดังนั้นตัวดำเนินการ '$min' จึงไม่อัปเดตค่าต่ำสุดของ '400' ด้วยค่าที่มากกว่า '600' ตามการค้นหา find() ที่แนบมาต่อไปนี้:



ทดสอบ > db.order.find ( ) .แต่ละ ( พิมพ์สัน )

มาทำการเปลี่ยนแปลงเล็กน้อยกับคิวรีอัปเดตเพื่อให้ได้ผลลัพธ์ที่แตกต่างกันในครั้งนี้ เราใช้คำสั่ง 'db' เดียวกันกับที่ใช้ฟังก์ชัน 'updateOne' ในนั้นเพื่อปรับเปลี่ยนระเบียนเดียวของ '3' ตัวดำเนินการ '$min' ใช้กับฟิลด์ 'ราคาขาย' เพื่อตั้งค่าเป็น '300' หากค่าของ '300' น้อยกว่าค่าที่แทรกไปแล้ว เราทราบดีว่าค่าที่แทรกไว้แล้วของ '400' ของช่องราคาขายนั้นมากกว่าค่าใหม่ '300' ที่จะเปรียบเทียบ ดังนั้นคราวนี้จึงแทนที่ '400' ด้วย '300' ข้อความเอาต์พุตแสดงการดำเนินการค้นหานี้สำเร็จ จำนวนที่แก้ไข = 1 หมายความว่า 1 เรคคอร์ดถูกแก้ไข

ทดสอบ > db.order.updateOne ( { รหัส: 3 } , { $ นาที : { ลดราคา: 300 } } )

หลังจากแสดงบันทึกของคอลเลกชัน 'คำสั่ง' จากฐานข้อมูล 'ทดสอบ' ในรูปแบบ JSON ผ่านคำสั่งฟังก์ชัน 'find()' ในเชลล์ MongoDB เราพบว่าบันทึกที่ 3 ได้รับการอัปเดตเรียบร้อยแล้ว ค่า 400 ของช่อง 'ราคาขาย' จะถูกแทนที่ด้วยค่า 300

ทดสอบ > db.order.find ( ) .แต่ละ ( พิมพ์สัน )

ตัวอย่างที่ 2:

ภายในภาพประกอบ MongoDB นี้ เราดึงบันทึกของฐานข้อมูลเฉพาะโดยการจัดกลุ่มที่เกี่ยวข้องกับตัวดำเนินการ '$min' ตามค่าต่ำสุดในบันทึก สมมติว่าคุณมี 5 ระเบียนเหมือนกันในคอลเล็กชัน 'ลำดับ' ของฐานข้อมูล 'ทดสอบ' ของ MongoDB และคุณต้องมีข้อมูลที่ซ้ำกันในฟิลด์เฉพาะของฐานข้อมูล 'ทดสอบ' สำหรับสิ่งนี้ เราเพิ่มบันทึกในคอลเลกชัน 'ลำดับ' ของฐานข้อมูล 'ทดสอบ' คราวนี้ เราแทรกค่าที่ซ้ำกันสำหรับฟิลด์ 'ชื่อเรื่อง' ใช้ในประโยค '$group' เพื่อสร้างกลุ่มของค่าที่ไม่ซ้ำกัน ผลลัพธ์ต่อไปนี้แสดงบันทึกเพิ่มเติม 3 รายการที่แทรกใหม่สำหรับฐานข้อมูล 'ทดสอบ' ตอนนี้ คอลเลกชัน 'ลำดับ' มีค่าซ้ำกันสำหรับฟิลด์ 'ชื่อเรื่อง' เมื่อเปรียบเทียบกับระเบียนเก่า 5 รายการ ที่เหลือใช้เหมือนกัน

หลังจากมีทั้งหมด 8 ระเบียนในคอลเลกชัน 'ลำดับ' ของฐานข้อมูล 'ทดสอบ' ก็ถึงเวลาทดสอบตัวดำเนินการ $min ของ MongoDB หลังจากแอปพลิเคชันบนฟิลด์เฉพาะที่จัดกลุ่มตามฟิลด์อื่น คำสั่งรวมที่แนบมาเป็นข้อมูลเกี่ยวกับเรื่องนี้ โดยจะขึ้นต้นด้วยคีย์เวิร์ด 'db' ตามด้วยชื่อคอลเล็กชันในฐานข้อมูลเฉพาะและฟังก์ชัน aggregate() ฟังก์ชันการรวมเริ่มต้นด้วยการใช้ $group clause ของ MongoDB ซึ่งใช้ที่นี่โดยเฉพาะเพื่อแสดงข้อมูลในกลุ่มที่เกี่ยวข้องกับฟิลด์ 'Title' ของฐานข้อมูล 'test' โดยที่ฟิลด์ 'Title' ถูกใช้เป็นคีย์เฉพาะ .

ในเวลาเดียวกัน ฟิลด์ราคาจะเริ่มต้นแยกกันซึ่งใช้เฉพาะเรกคอร์ดมูลค่าขั้นต่ำจากเรกคอร์ดเดียวกันทั้งหมด 8 รายการผ่านตัวดำเนินการ '$min' ที่ใช้กับฟิลด์นั้น ผลลัพธ์ของการดำเนินการค้นหานี้แสดงการแสดงระเบียน 5 รายการพร้อมการอัปเดตเล็กน้อยในส่วนราคา คุณจะเห็นว่าไม่มีการแสดงบันทึกซ้ำ เร็กคอร์ดที่มีค่าเฉพาะและมีค่าน้อยที่สุดบางส่วนจะแสดงที่นี่

ทดสอบ > db.order.aggregate ( [ { $กลุ่ม : { _id: ' $ชื่อเรื่อง ' , ราคา: { $ นาที : ' $ราคาขาย ' } } } ] )

บทสรุป

คู่มือนี้เป็นคอลเลกชันของภาพประกอบ MongoDB เพื่อแสดงวิธีง่ายๆ ที่เป็นไปได้ในการใช้ตัวดำเนินการ “$min” ย่อหน้าบทนำใช้เพื่อหารือเกี่ยวกับวัตถุประสงค์ของการใช้งานใน MongoDB ส่วนแรกของบทความนี้กล่าวถึงวิธีการทำงานของตัวดำเนินการ '$min' และไม่ทำงานสำหรับระเบียนเดียวในฐานข้อมูล เช่น เพื่ออัปเดตหรือแทรกระเบียนเป็นค่าต่ำสุด นอกจากนี้ ตัวอย่างล่าสุดยังแสดงให้เห็นถึงการใช้งานเพื่อจัดกลุ่มเรคคอร์ดคอลเลคชันที่ไม่ซ้ำกันทั่วทั้งฐานข้อมูล