Dit kan in een paar stappen. De eerste stap is het verkrijgen van een lijst van de documenten met de minimale score door gebruik te maken van het aggregatieraamwerk met $match
, $unwind
en $group
operators die uw documenten stroomlijnen om de minimumscore voor elk document te vinden:
lowest_scores_docs = db.school.aggregate([
{ "$match": {"scores.type": "homework"} },
{ "$unwind": "$scores" }, { "$match": {"scores.type": "homework"} },
{ "$group": { "_id":"$_id", "lowest_score": {"$min": "$scores.score" } } } ] )
De tweede stap is om door het bovenstaande woordenboek te bladeren en de te gebruiken $pull
operator in de update-query om het element als volgt uit de array te verwijderen:
for result in lowest_scores_docs["result"]:
db.school.update({ "_id": result["_id"] },
{ "$pull": { "scores": { "score": result["lowest_score"] } } } )