MongoDB $Max โอเปอเรเตอร์

Mongodb Max Xo Pexre Texr



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

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

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

ทดสอบ > db.data.insertMany ( [ { 'รหัส' : หนึ่ง , 'ชื่อ' : 'ไชโย' , 'เงินเดือน' : 65000 , 'อายุ' : 44 } ,
... { 'รหัส' : 2 , 'ชื่อ' : 'สตีเฟน' , 'เงินเดือน' : 77000 , 'อายุ' : 55 } ,
... { 'รหัส' : 3 , 'ชื่อ' : 'มาเรีย' , 'เงินเดือน' : 42000 , 'อายุ' : 27 } ,
... { 'รหัส' : 4 , 'ชื่อ' : 'ฮอว์กิน' , 'เงินเดือน' : 58000 , 'อายุ' : 33 } ] )







คำสั่งแทรกสำเร็จและข้อความเอาต์พุตแสดงว่าบันทึกถูกเพิ่ม



หลังจากใส่บันทึกในคอลเลกชัน 'ข้อมูล' ของ MongoDB ของเราแล้ว ก็ถึงเวลาดูบันทึกเหล่านั้นบนเชลล์ ดังนั้นเราจึงเรียกใช้คำสั่งฟังก์ชัน 'find()' บน MongoDB Cli ตามด้วยฟังก์ชัน 'forEach()' รับอาร์กิวเมนต์ printjson เพื่อแสดงผลในรูปแบบ JSON ผลลัพธ์ที่แสดงในเชลล์แสดงเอกสารทั้งหมด 4 ฉบับในคอลเล็กชันซึ่งแสดงในรูปภาพเอาต์พุตต่อไปนี้:



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





ลองใช้โอเปอเรเตอร์ “$max” ในคำสั่ง update ของ MongoDB เพื่อแก้ไขบันทึกที่แทรกไปแล้ว ดังนั้น updateOne() จะถูกใช้ที่นี่เพื่อแก้ไขเฉพาะระเบียนเดียวของคอลเลกชัน 'ข้อมูล' เช่น ระเบียนเฉพาะที่ฟิลด์ 'id' มีค่าเป็น '2' ตัวดำเนินการ '$max' ใช้กับฟิลด์ 'เงินเดือน' ของคอลเล็กชัน 'ข้อมูล' เพื่อตรวจสอบว่าฟิลด์ 'เงินเดือน' มีค่ามากกว่า 55,000 หรือไม่ หากไม่มี ให้อัปเดตเรกคอร์ดเป็น 55,000 ผลลัพธ์ผลลัพธ์สำหรับสิ่งนี้ แบบสอบถามฟังก์ชัน updateOne() ซึ่งแสดงการแก้ไข '0' นับเป็นเรกคอร์ด '2' มีค่าเงินเดือนน้อยกว่า 55,000

ทดสอบ > db.data.updateOne ( { รหัส: 2 } , { $สูงสุด : { เงินเดือน: 55000 } } )



หลังจากการอัปเดตนี้ เราลองใช้การสืบค้นฟังก์ชัน 'find()' เดียวกันเพื่อแสดงผลที่แก้ไขบนเชลล์บรรทัดคำสั่ง MongoDB แต่เราได้ผลลัพธ์เดียวกันกับที่เราได้รับก่อนใช้คำสั่ง 'อัปเดต' ไม่มีการเปลี่ยนแปลงเนื่องจากค่า 77000 มากกว่า 55000

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

ลองใช้แบบสอบถาม updateOne() เดียวกันอีกครั้งด้วยการแก้ไขเล็กน้อย ครั้งนี้ เราลองใช้ค่าที่มากกว่าซึ่งก็คือ '85000' มากกว่าค่า '77000' ซึ่งอยู่ในฟิลด์ 'เงินเดือน' ของการรวบรวม 'ข้อมูล' เพื่อสร้างความแตกต่างในผลลัพธ์ของเรา ผลลัพธ์แสดงจำนวนการแก้ไข '1' ในครั้งนี้ เนื่องจากค่า '85000' แทนที่ค่าที่มีอยู่แล้วของ '77000' ในฟิลด์หลังจากการเปรียบเทียบเกิดขึ้นเพียงเพราะตัวดำเนินการ '$max' ในข้อความค้นหานี้

ทดสอบ > db.data.updateOne ( { รหัส: 2 } , { $สูงสุด : { เงินเดือน: 85000 } } )

หลังจากแทนที่ค่าที่น้อยกว่าของ '77000' ด้วยค่าใหม่เป็น '85000' ผ่านตัวดำเนินการ '$max' ของ MongoDB ได้สำเร็จ ในที่สุดเราก็ใช้ฟังก์ชัน 'find()' ในคำสั่ง 'db' เพื่อตรวจสอบการอัปเดตนี้ ไม่ว่าจะอัปเดตสำเร็จหรือไม่ ผลลัพธ์แสดงว่าค่าในช่อง 'เงินเดือน' ของระเบียนที่ 2 ในคอลเล็กชันนี้ได้รับการอัปเดตอย่างสมบูรณ์

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

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

ข้ามไปที่ตัวอย่างอื่นเพื่อใช้ประโยชน์จากตัวดำเนินการ '$max' ใน MongoDB ครั้งนี้ เราเลิกใช้โอเปอเรเตอร์ “$max” เพื่อจัดกลุ่มและแสดงบันทึกเฉพาะของคอลเล็กชัน หากมีค่าฟิลด์เดียวกันซ้ำกัน สำหรับสิ่งนี้ เราแทรกบันทึกอีก 2 รายการในคอลเลกชัน 'ข้อมูล' ของฐานข้อมูล 'ทดสอบ' ระเบียนเหล่านี้มีค่าเหมือนกัน 2 ค่าในช่อง 'ชื่อ' ซึ่งอยู่ในระเบียน 4 ระเบียนที่แทรกไว้แล้วเช่นกัน และส่วนที่เหลือจะแตกต่างกัน ในการแทรกระเบียน เราใช้คำสั่ง 'db' เดียวกันซึ่งมีฟังก์ชัน 'insertMany' อยู่ในนั้นสำหรับการรวบรวม 'ข้อมูล' เพื่อรับการอัปเดต

ทดสอบ > db.data.insertMany ( [ { 'รหัส' : 5 , 'ชื่อ' : 'ไชโย' , 'เงินเดือน' : 35000 , 'อายุ' : สี่ห้า } ,
{ 'รหัส' : 6 , 'ชื่อ' : 'ฮอว์กิน' , 'เงินเดือน' : 67000 , 'อายุ' : 33 } ] )

ดำเนินการคำสั่งสำเร็จ

เมื่อเพิ่มระเบียนใหม่ 2 รายการแล้ว คุณยังสามารถแสดงข้อมูลเหล่านี้ได้โดยใช้ฟังก์ชัน 'ค้นหา' เดียวกันในคำสั่ง 'db' ตามด้วยฟังก์ชัน 'forEach' ผลลัพธ์ที่แสดงต่อไปนี้ในรูปภาพแสดงเรกคอร์ดใหม่ 2 รายการที่ส่วนท้ายของคอลเล็กชันนี้:

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

หลังจากแสดงการรวบรวม 'ข้อมูล' ทั้ง 6 รายการแล้ว เราก็พร้อมที่จะดำเนินการรวมในนั้น ดังนั้น ฟังก์ชัน 'รวม' จึงถูกใช้ในแบบสอบถามที่แสดงรายการต่อไปนี้ ด้วยฟังก์ชันนี้ เราใช้โอเปอเรเตอร์ '$group' เพื่อจัดกลุ่มเรกคอร์ดของคอลเลกชัน 'ข้อมูล' ตามชื่อเฉพาะของฟิลด์ 'id' และฟิลด์ 'เงินเดือน' ตัวดำเนินการ '$max' ใช้กับฟิลด์ 'เงินเดือน' ของเรกคอร์ดเพื่อรับค่าสูงสุดที่จะแสดง รับค่าสูงสุดจากฟิลด์เงินเดือน” ตามชื่อที่ซ้ำกันในฟิลด์ “ชื่อ” ซึ่งใช้เป็น “รหัส” สำหรับการจัดกลุ่มนี้ที่จะแสดง แสดงข้อมูลทั้งหมด 4 รายการ ค่าที่น้อยที่สุด (จากเรคคอร์ดที่ซ้ำกัน) จะถูกละเว้นในขณะที่แสดงค่าที่มากที่สุด

db.data.aggregate ( [ { $กลุ่ม : { _id: ' $ชื่อ ' , เงินเดือน: { $สูงสุด : ' $ เงินเดือน ' } } } ] )

บทสรุป

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