Sử dụng bulk_write()
Như bạn đã thấy trong video, bạn có thể dùng một số thao tác trong .bulk_write():
InsertOne()UpdateOne()/UpdateMany()/ReplaceOne()DeleteOne()/DeleteMany()ReplaceOne()
Bạn đang dọn dẹp dữ liệu mùa xuân cho cơ sở dữ liệu phim, và một vài thao tác sau sẽ rất hữu ích!
Đầu tiên, nhóm của bạn muốn gắn cờ tất cả các phim đoạt Oscar có điểm đánh giá cao là "featured" trên trang chủ. Thứ hai, để giảm lộn xộn, bạn được yêu cầu xóa các phim phát hành từ rất lâu.
Bạn sẽ gom cả hai thay đổi vào một thao tác .bulk_write() duy nhất để thực thi cùng lúc.
Bài tập này là một phần của khóa học
Nhập môn MongoDB với Python
Hướng dẫn bài tập
- Hoàn thành thao tác đầu tiên trong
operationsđể cập nhật tất cả phim có điểm đánh giá lớn hơn hoặc bằng8.0và đã thắng Oscar; đặt trường mới"featured"thànhTruecho các phim này. - Hoàn thành thao tác thứ hai trong
operationsđể xóa tất cả phim có năm phát hành trước1980. - Thực hiện thao tác
.bulk_write()trênmovvà lưu kết quả vàores. - In ra có bao nhiêu tài liệu đã được sửa đổi và bao nhiêu tài liệu đã bị xóa.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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.____)