Това може да стане в няколко стъпки. Първата стъпка е да вземете списък с документи с минимален резултат, като използвате рамката за агрегиране с $match
, $unwind
и $group
оператори, които рационализират вашите документи, за да намерите минималния резултат за всеки документ:
lowest_scores_docs = db.school.aggregate([
{ "$match": {"scores.type": "homework"} },
{ "$unwind": "$scores" }, { "$match": {"scores.type": "homework"} },
{ "$group": { "_id":"$_id", "lowest_score": {"$min": "$scores.score" } } } ] )
Втората стъпка е да преминете през речника по-горе и да използвате $pull
оператор в заявката за актуализиране, за да премахнете елемента от масива, както следва:
for result in lowest_scores_docs["result"]:
db.school.update({ "_id": result["_id"] },
{ "$pull": { "scores": { "score": result["lowest_score"] } } } )