これは、いくつかの手順で実行できます。最初のステップは、 $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" } } } ] )
2番目のステップは、上記の辞書をループして、を使用することです。 $pull
次のように、更新クエリの演算子を使用して、配列から要素を削除します。
for result in lowest_scores_docs["result"]:
db.school.update({ "_id": result["_id"] },
{ "$pull": { "scores": { "score": result["lowest_score"] } } } )