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



如果重复,我深表歉意。我有这样的集合:

{
  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"}
...

有人可以帮忙吗?谢谢

您可以使用

以下聚合

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" }] }
      ]
    }
  }}
])

最新更新