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

グループから最新のタイムスタンプを持つドキュメントのみをクエリするにはどうすればよいですか?

    集約パイプラインですべてを実行できる場合は、ここでいくつかの方法を混合しています。それ以外の場合は、正しい順序で手順を実行するだけです。

    db.collection.aggregate([
        {$sort: { createdOn: -1 }},
        {$group: { _id: "$itemId", 
            createdOn: {$first: "$createdOn"},
            field1: {$first: "$field1" },
            field2: {$first: "$field2" }
        }},
        {$match: { field1: "foo" }}
    ])
    

    したがって、最初に最新のドキュメントを並べ替えます。 itemIdでグループ化する (順序は$ firstで維持されます)、必要に応じて$matchでフィルタリングします。ただし、グループ化されたドキュメントは最新のものになります。



    1. MongoDB-タイムゾーンなしで日付を保存する

    2. oplog.rsのtsフィールドのインデックスは更新されません

    3. mongoDBの巨大な配列に集約する方法は?

    4. Spring-boot:mongoDBの日付比較が機能しない