Использование 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.____)