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

MongoDBAggregate-グループ内の最新のアイテムを取得するためのクエリ

    $last を使用できます および $ first 演算子。グループ化する前にドキュメントを並べ替える必要があることに注意してください:

    db.so.aggregate([
     { $sort: {productID:-1, date: -1} },
     { 
         $group: {
             _id : "$productID",
             date: {$last: "$date" },
             amount: {$first: "$amount" },
             id : {$first: "$_id"}
         }
     },
     { $project: { _id: "$id", productId: "$_id", date: 1, amount: 1 } }
    ])
    

    出力:

    {
        "_id" : 5,
        "productId" : 1,
        "date" : ISODate("2017-02-01T00:00:00.000Z"),
        "amount" : 11
    },
    {
        "_id" : 7,
        "productId" : 2,
        "date" : ISODate("2017-02-01T00:00:00.000Z"),
        "amount" : 222
    },
    {
        "_id" : 8,
        "productId" : 3,
        "date" : ISODate("2017-02-01T00:00:00.000Z"),
        "amount" : 33
    },
    {
        "_id" : 4,
        "productId" : 4,
        "date" : ISODate("2017-02-01T00:00:00.000Z"),
        "amount" : 4
    }
    



    1. nodejsでMongoDBクエリ結果をストリーミングする方法は?

    2. mongodbidからタイムスタンプを取得する

    3. mongoose、Node.jsでvarによってキーを設定する方法は?

    4. Mongoアレイの更新:動的キーを削除します