2017-12-12 12 views
0

私はこのコレクションを持っている:MongoDBのグループ埋め込まれたオブジェクト

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

私はそれが

{ 
"_id" : "G1", 
"product" : { 
    "oldPrice" : 1.12, 
    "newPrice" : 1.23 
    } 
} 
だろうproductGroup によってグループ化したいと私の場合は分newPrice を持つ唯一の製品を保ちます

これを行うと、商品全体の組み込みオブジェクトが必要な間にnewPriceプロパティのみが取得されます

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

どうすればいいですか?

答えて

1

集約パイプラインでは、各グループで最小の新しい価格を得るという望ましい結果を得るために、$sort$firstを使用します。

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

私はそれを逃した、ありがとう! – Monta