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

配列の最大値と一致するサブドキュメントを取得します

    これを行うための最適な最良の方法は、MongoDB3.2以降です。 $ projectを実行する必要があります ドキュメントを使用して、 $ filter 条件に一致する「topicInfo」配列のサブセットを返す演算子。また、MongoDB3.2以降、 $maxを使用できます。 $ project condのステージ 式を記述し、戻り値に対して論理演算を実行します。

    パイプラインの最終段階は、 $ match > $ examples 要素クエリ演算子とドット表記 配列の最初の要素にアクセスします。これにより、ネットワークを介して送信されるデータの量と、クライアント側でドキュメントをデコードするために使用される時間とメモリの両方が削減されます。

    db.collection.aggregate([
        { "$project": { 
            "topicInfo": { 
                "$filter": { 
                    "input": "$topicInfo", 
                    "as": "t", 
                    "cond": { 
                        "$and": [ 
                            { "$eq": [ "$$t.topic", "topic2"] }, 
                            { "$eq": [ "$$t.time", { "$max": "$topicInfo.time" } ] }
                        ] 
                    } 
                } 
            } 
        }},
        { "$match": { "topicInfo.0": { "$exists": true } } }
    ])
    


    1. mongodbで重複するドキュメントを削除する最速の方法

    2. Meteor.jsとマングースの互換性

    3. AWSのリージョン間でのMongoDBレプリカセットのデプロイ

    4. mongodbの集約で特定のフィールドを持つドキュメントをグループ化する方法