การใช้ bulk_write()
ดังที่เห็นในวิดีโอ .bulk_write() รองรับการดำเนินการหลายประเภท ได้แก่
InsertOne()UpdateOne()/UpdateMany()/ReplaceOne()DeleteOne()/DeleteMany()ReplaceOne()
ตอนนี้ถึงเวลาจัดระเบียบฐานข้อมูลภาพยนตร์กันแล้ว!
ประการแรก ทีมต้องการทำเครื่องหมายภาพยนตร์ที่ได้รับรางวัลออสการ์และมีคะแนนสูงว่าเป็น "featured" บนหน้าแรก ประการที่สอง เพื่อลดข้อมูลที่ไม่จำเป็น ให้ลบภาพยนตร์ที่เข้าฉายมานานแล้วออก
เราจะรวมการเปลี่ยนแปลงทั้งสองเข้าไว้ใน .bulk_write() เดียว เพื่อให้ดำเนินการพร้อมกัน
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
MongoDB เบื้องต้นใน Python
คำแนะนำการฝึกหัด
- กำหนดค่าการดำเนินการแรกใน
operationsเพื่ออัปเดตภาพยนตร์ทุกเรื่องที่มีคะแนน มากกว่าหรือเท่ากับ8.0และได้รับรางวัลออสการ์ โดยเพิ่มฟิลด์ใหม่"featured"เป็นTrueให้กับภาพยนตร์เหล่านั้น - กำหนดค่าการดำเนินการที่สองใน
operationsเพื่อลบภาพยนตร์ทุกเรื่องที่เข้าฉายก่อนปี1980 - ดำเนินการ
.bulk_write()บนmovและเก็บผลลัพธ์ไว้ในตัวแปรres - แสดงจำนวนเอกสารที่ถูกแก้ไข และจำนวนเอกสารที่ถูกลบ
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
from pymongo import UpdateMany, DeleteMany
operations = [
# Set featured to True for all movies with rating > 8 that won oscar
____(
{ "rating" : { ____: ____}, "won_oscar": ____ },
{ "$set": { ____: ____} }
),
# Remove all movies with release_year before 1980
____(
{ "release_year": { ____: ____} }
)
]
# Perform bulk write
res = mov.____
# Print out counts
print(res.____)
print(res.____)