Mongodb组嵌入对象

时间:2017-12-12 09:52:41

标签: mongodb aggregation-framework

我有这个系列:

{
"_id" : "1",
"productGroup" : "G1",
"product" : {
    "oldPrice" : 1.22,
    "newPrice" : 1.33
    }
},
{
"_id" : "2",
"productGroup" : "G1",
"product" : {
     "oldPrice" : 1.12,
     "newPrice" : 1.23
    }
}

我想按 productGroup 进行分组,并且只保留min newPrice 的产品 在我的情况下,它将是

{
"_id" : "G1",
"product" : {
   "oldPrice" : 1.12,
   "newPrice" : 1.23
   }
}

如果我这样做,我只需要包含newPrice属性,而我需要整个产品嵌入对象

db.myColl.aggregate([{
    "$group" : {
        _id : "$productGroup",
        product : { "$min" : "$product.newPrice"}
    }
}])

关于如何做的任何想法?

1 个答案:

答案 0 :(得分:1)

在汇总管道中,使用$sort$first来获得在每个组中获得最低新价格的预期结果。

db.myColl.aggregate([
    {$sort: {"product.newPrice":1}},
    {$group: {_id:"$productGroup", product:{$first:"$product"}}}
]);