Получить максимальное значение из массива в mongodb - PullRequest
0 голосов
/ 05 октября 2018

Предполагая, что в нашей коллекции есть следующие документы:

{
  name: 'Product1',
  prices: [
    { shop: 'shop1', price: 1 },
    { shop: 'shop2', price: 2 }
  ]
},
{
  name: 'Product2',
  prices: [
    { shop: 'shop3', price: 5 },
    { shop: 'shop4', price: 3 }
  ]
}

Мне нужно получить следующие результаты из этих документов, используя mongodb:

{
  name: 'Product1',
  bestPrice: { shop: 'shop1', price: 1 }
},
{
  name: 'Product2',
  bestPrice: { shop: 'shop4', price: 3 }
}

Другими словами, я хочуполучить документы с самыми низкими ценами, упорядоченными по значению поля цены.Как я могу сделать это, используя структуру агрегации mongodb?

1 Ответ

0 голосов
/ 05 октября 2018

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

db.collection.aggregate([
  { "$project": {
    "name": 1,
    "bestPrice": {
      "$arrayElemAt": [
        "$prices",
        {
          "$indexOfArray": [
            "$prices.price",
            { "$min": "$prices.price" }
          ]
        }
      ]
    }
  }}
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...