Utiliser bulk_write()
Comme vous l’avez vu dans la vidéo, vous pouvez utiliser plusieurs opérations dans .bulk_write() :
InsertOne()UpdateOne()/UpdateMany()/ReplaceOne()DeleteOne()/DeleteMany()ReplaceOne()
Vous faites un peu de ménage de printemps dans votre base de données de films, et certaines de ces opérations vont vous être utiles !
D’abord, votre équipe veut mettre en avant sur la page d’accueil tous les films très bien notés et ayant remporté un Oscar, en les étiquetant "featured". Ensuite, pour réduire l’encombrement, on vous demande de supprimer tous les films sortis il y a longtemps.
Vous allez regrouper ces deux changements dans une seule opération .bulk_write() pour les exécuter ensemble.
Cet exercice fait partie du cours
Introduction à MongoDB en Python
Instructions
- Complétez la première opération dans
operationspour mettre à jour tous les films dont la note est supérieure ou égale à8.0et qui ont remporté un Oscar ; définissez un nouveau champ"featured"àTruepour ces films. - Complétez la deuxième opération dans
operationspour supprimer tous les films dont l’année de sortie est antérieure à1980. - Exécutez l’opération
.bulk_write()surmovet stockez le résultat dansres. - Affichez combien de documents ont été modifiés et combien ont été supprimés.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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.____)