sql >> データベース >  >> NoSQL >> MongoDB

配列要素を比較し、スコアが最も低いものを削除します

    これは、いくつかの手順で実行できます。最初のステップは、 $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"] } } } )
    


    1. Mongodbでドキュメントを更新して返す

    2. 配列から上位N個のエントリを検索する

    3. MongoDBのベンチマーク-NoSQLパフォーマンスの推進

    4. MongoDBのコレクションの再帰検索