2017-03-15 17 views
0

MongoDBを初めて使用しています。私は製品の配列から特定の日付の最新の更新製品を入手するという要件があります。 以下は私の要件のJSONオブジェクトです。MongoDBの集計クエリ

{ 
    "_id": ObjectId("10001"), 
    "product": [{ 
     "image": "./../../../prod1.html", 
     "name": "product", 
     "version": 1, 
     "updatedDate": "14-03-2017" 
    }, { 
     "image": "./../../../prod1.html", 
     "name": "product", 
     "version": 2, 
     "updatedDate": "14-03-2017" 
    }, { 
     "image": "./../../../prod1.html", 
     "name": "product", 
     "version": 1, 
     "updatedDate": "15-03-2017" 
    }, { 
     "image": "./../../../prod1.html", 
     "name": "product", 
     "version": 2, 
     "updatedDate": "15-03-2017" 
    }, { 
     "image": "./../../../prod1.html", 
     "name": "product", 
     "version": 3, 
     "updatedDate": "15-03-2017" 
    }, { 
     "image": "./../../../prod1.html", 
     "name": "product", 
     "version": 4, 
     "updatedDate": "15-03-2017" 
    }] 
}, { 
    "_id": ObjectId("10002"), 
    "product": [{ 
     "image": "./../../../prod1.html", 
     "name": "product", 
     "version": 1, 
     "updatedDate": "14-03-2017" 
    }, { 
     "image": "./../../../prod1.html", 
     "name": "product", 
     "version": 2, 
     "updatedDate": "14-03-2017" 
    }, { 
     "image": "./../../../prod1.html", 
     "name": "product", 
     "version": 1, 
     "updatedDate": "15-03-2017" 
    }, { 
     "image": "./../../../prod1.html", 
     "name": "product", 
     "version": 2, 
     "updatedDate": "15-03-2017" 
    }, { 
     "image": "./../../../prod1.html", 
     "name": "product", 
     "version": 3, 
     "updatedDate": "15-03-2017" 
    }] 
}, 
} 

最新のバージョンの14-03-2017で製品を取得するクエリが必要です。

期待される結果は次のとおりです。

{ 
"_id" : ObjectId("10001"), 
"product" : [ 
    {"image" : "./../../../prod1.html","name" : "product","version" : 4,"updatedDate":"15-03-2017"} 
]}, 
{ 
"_id" : ObjectId("10002"), 
"product" : [ 
    {"image" : "./../../../prod1.html","name" : "product","version" : 3,"updatedDate":"15-03-2017"} 
]} 

それは非常にいくつかのいずれかが期待される結果を得るために、集計関数で私を助けることができる認めるだろう。

+0

は、その日に、最新の日付と最新のバージョンで製品をフェッチする必要があります(日付は、複数のバージョンに含まれています) – yuvan

+0

あなたのMongoDBサーバは何ですかバージョン? – chridam

答えて

1

使用aggregateコマンド、

db.collection.aggregate([{ 
    $unwind: "$product" 
}, { 
    $sort: { 
     "product.updatedDate": 1 
    } 
}, { 
    $group: { 
     _id: "$_id", 
     product: { 
      $last: "$product" 
     } 
    } 
}]) 

出力:

{ 
    "_id" : ObjectId("10002"), 
    "product" : { 
     "image" : "./../../../prod1.html", 
     "name" : "product", 
     "version" : 3, 
     "updatedDate" : "15-03-2017" 
    } 
} 
{ 
    "_id" : ObjectId("10001"), 
    "product" : { 
     "image" : "./../../../prod1.html", 
     "name" : "product", 
     "version" : 4, 
     "updatedDate" : "15-03-2017" 
    } 
} 
+0

こんにちは友人、ありがとう。それは完璧に働いた。あなたのすぐ応答に感謝します。 – yuvan