7 เม.ย. 2021 เวลา 02:00 • การศึกษา
MongoDB : EP06 - การแก้ไขข้อมูลใน MongoDB
Update In MongoDB Database
ในการอัพเดตข้อมูลใน Collection สำหรับ MongoDB นั้นสามารถทำได้หลากหลายวิธี แต่โดยทั่วไปจะเน้นไปที่การอัพเดตเพียงแค่ 2 วิธีคือ การอัพเดตแบบข้อมูล 1 ชุด และการอัพเดตข้อมูลทีละหลายๆชุด
1. การอัพเดตทีละ 1 ชุดข้อมูล ( Update One )
Update One
ทำการสร้างฟังก์ชั่นภายในคลาส (​ Class ) : MongoDB เพื่อใช้สำหรับการอัพเดตข้อมูลทีละ 1 ชุดดังนี้
- update_data() : ภายในฟังก์ชั่นเรียกใช้คำสั่งของ PyMongo คือ update_one() โดยมีการใส่ query_Set สำหรับเป็นค่าอ้างอิง ( Reference Field ) ที่จะอัพเดต และ new_value สำหรับข้อมูลที่จะอัพเดต จากนั้นเมื่อทำการอัพเดตเสร็จ ตรวจเช็คค่าเปลี่ยนแปลง ซึ่งหากมีการอัพเดต ค่าเลขที่ได้ จะมีค่ามากกว่า 0
Test Update One
ทดสอบการอัพเดตโดยการจำลองข้อมูลที่จะอัพเดต โดยในตัวอย่างใช้ ObjectID เป็น query_set และฟิลด์ ( Field ) และค่าที่จะอัพเดตคือ "salary" โดยข้อมูลก่อนอัพเดตคือ
{
'_id': ObjectId('60684a4042b575b5fb070aa8'),
'name': 'l3oxME-01',
'age': 20,
'salary': 25000,
'created': '2021-04-03T17:58:08.679669'
}
ซึ่งจะเห็นว่าข้อมูล Salary เดิมเป็น 25000 เมื่อทำการอัพเดตข้อมูลจาก Salary : 25000 เป็น 50000 ผลลัพธ์ที่ได้เป็นดังนี้
{
"_id" : ObjectId("60684a4042b575b5fb070aa8"),
"name" : "l3oxME-01",
"age" : 20,
"salary" : 50000,
"created" : "2021-04-03T17:58:08.679669"
}
2. การอัพเดตแบบหลายชุดพร้อมกัน (​ Update Many )
Update Many
ทำการสร้างฟังก์ชั่นสำหรับการอัพเดตข้อมูลชนิดหลายชุดพร้อมกัน (​ Update Many ) ภายในคลาส (​ Class ) : MongoDB โดยทำงานดังนี้
- update_datas() : ภายในฟังก์ชั่นมีการเรียกใช้งานคำสั่งของ PyMongo คือ update_many() ซึ่งการทำงานจะคล้ายกับ update_one() เพียงแต่สามารถอัพเดตข้อมูลได้มากกว่า 1 ชุด
Test Update Many
จากโค้ดตัวอย่าง เป็นการทดลองการอัพเดตข้อมูล โดยกำหนด query_set ให้ฟิลเตอร์ ( Filter ) เอาค่า "salary" ที่มากว่า 20000 จากนั้นค่าที่อัพเดตคือ "age" โดยเปลี่ยนเป็น age = 30 จะเห็นว่าก่อนทำการอัพเดต ข้อมูลเป็นดังนี้
{
"_id" : ObjectId("60684a4042b575b5fb070aa8"),
"name" : "l3oxME-01",
"age" : 20,
"salary" : 50000,
"created" : "2021-04-03T17:58:08.679669"
}
{
"_id" : ObjectId("60684a4042b575b5fb070aa9"),
"name" : "l3oxME-02",
"age" : 25,
"salary" : 20000,
"created" : "2021-04-03T17:58:08.679745"
}
{
"_id" : ObjectId("60684a4042b575b5fb070aaa"),
"name" : "l3oxME-03",
"age" : 30,
"salary" : 30000,
"created" : "2021-04-03T17:58:08.679753"
}
หลังจากทำการรันโปรแกรมผลลัพธ์ที่ได้เป็นดังนี้
{
"_id" : ObjectId("60684a4042b575b5fb070aa8"),
"name" : "l3oxME-01",
"age" : 30,
"salary" : 50000,
"created" : "2021-04-03T17:58:08.679669"
}
{
"_id" : ObjectId("60684a4042b575b5fb070aa9"),
"name" : "l3oxME-02",
"age" : 25,
"salary" : 20000,
"created" : "2021-04-03T17:58:08.679745"
}
{
"_id" : ObjectId("60684a4042b575b5fb070aaa"),
"name" : "l3oxME-03",
"age" : 30,
"salary" : 30000,
"created" : "2021-04-03T17:58:08.679753"
}
ซึ่งจะเห็นว่าข้อมูลที่มี salary > 20000 จะเปลี่ยนค่า age = 30
โฆษณา