Как получить соответствующее свойство минимального значения из массива - PullRequest
1 голос
/ 17 июня 2019

Прошу прощения, если оно дублируется. У меня есть такая коллекция:

{
  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 голосов
/ 17 июня 2019

Вы можете использовать ниже агрегации

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