Получить документ с максимальным значением поля в MongoDB - PullRequest
1 голос
/ 10 января 2020

Я использую структуру агрегации, чтобы получить максимальное значение поля из коллекции в наборе документов, например

db.getCollection('Collection').aggregate([
   {$match: {"product": {$in: ["product-a"]}}},
   {$group: {_id: null, maxPrice: {$max: "$price"}}}
])

Но что, если я хочу получить идентификатор документа, который соответствует этому критерию? Как я могу сделать это на следующей стадии конвейера?

1 Ответ

1 голос
/ 10 января 2020

Вы можете поместить все поля в оператор $max следующим образом ... Он выдаст вам документ для поля max, который сначала используется в $max объект. Просто я использовал price здесь.

db.getCollection("Collection").aggregate([
  { "$match": { "product": { "$in": ["product-a"] } } },
  { "$group": {
    "_id": null,
    "maxPrice": {
      "$max": {
        "price": "$price",
        "_id": "$_id"
      }
    }
  }}
])
...