bulk_write() gebruiken
Zoals je in de video zag, kun je meerdere bewerkingen gebruiken in .bulk_write():
InsertOne()UpdateOne()/UpdateMany()/ReplaceOne()DeleteOne()/DeleteMany()ReplaceOne()
Je doet een lenteschoonmaak in je filmdatabase, waarbij sommige hiervan goed van pas komen!
Eerst wil je team alle hoog beoordeelde, Oscar-winnende films markeren als "featured" op de homepage. Ten tweede, om rommel te verminderen, krijg je de opdracht om alle films van lang geleden te verwijderen.
Je bundelt beide wijzigingen in één .bulk_write()-bewerking om ze samen uit te voeren.
Deze oefening maakt deel uit van de cursus
Introductie tot MongoDB in Python
Oefeninstructies
- Maak de eerste bewerking in
operationsaf om alle films bij te werken met een rating die groter dan of gelijk aan8.0is en die een Oscar hebben gewonnen; stel voor deze films een nieuw veld"featured"in opTrue. - Maak de tweede bewerking in
operationsaf om alle films te verwijderen met een releasejaar vóór1980. - Voer de
.bulk_write()-bewerking uit opmoven sla het resultaat op alsres. - Print hoeveel documenten zijn gewijzigd en hoeveel documenten zijn verwijderd.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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.____)