如何从数组中获取最小值的对应属性

时间:2019-06-17 04:12:24

标签: mongodb mongodb-query aggregation-framework

很抱歉,如果重复。我有一个这样的收藏:

{
  game_name:"ABC",
  ...,
  prices:[
    {area: 'US', price_usd: 10},
    {area: 'AU', price_usd: 11},
    ...
  ]
},
...

我可以得到:

{game_name:"ABC", min_price:"10"}
...

作者:

db.games.aggregate({
    $project:{
      "game_name":1,
      "min_price":{
        $min:"$prices.price_usd"
      }
    }
})

但是,查询结果我想要的是:

{game_name:"ABC", min_price:"10", min_area: "US"}
...

任何人都可以帮忙吗?谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用以下汇总

db.games.aggregate([
  { "$project": {
    "game_name": 1,
    "min_price": {
      "$min": "$prices.price_usd"
    },
    "min_area": {
      "$arrayElemAt": [
        "$prices.area",
        { "$indexOfArray": ["$prices.price_usd", { "$min": "$prices.price_usd" }] }
      ]
    }
  }}
])