MongoDB: как получить максимальные и минимальные значения для каждой категории? Я получил нулевое значение - PullRequest
0 голосов
/ 26 апреля 2020

Мне нужно найти максимальное и минимальное время полета для каждой строки.

Это часть моей коллекции (это всего два документа, но у меня есть что-то вроде 20):

db.myflights.insert([
//1
{
    start_time: new Date("2020-05-18T06:15:00Z"),
    land_time: new Date("2020-05-18T07:30:00Z"),
    flight_time: 1.25, 
    passengers: "90",
    line_name: "WizzAir"
},
//2
{
    start_time: new Date("2020-06-18T07:30:00Z"),
    land_time: new Date("2020-06-18T09:30:00Z"),
    flight_time: 2, 
    passengers: "111",
    line_name: "Lufthansa"
}
]) 

I попробовал:

db.myflights.aggregate([
    {"$group" : {_id:"$line_name"}},

    {
    $addFields:
    {"max_time": {$max: "$flight_time"}  }
            },
    {
    $addFields:
    {"min_time": {$min: "$flight_time"} }
            }

])

Я получил ноль в обоих случаях max / min_time.

У вас есть какие-либо советы, как мне это изменить?

заранее спасибо

1 Ответ

1 голос
/ 27 апреля 2020

Вы можете выполнить $max и $min как часть этапа $group.

Попробуйте:

db.collection.aggregate([
  {
    "$group": {
      _id: "$line_name",
      max_time: {
        $max: "$flight_time"
      },
      min_time: {
        $min: "$flight_time"
      }
    }
  }
])

MongoPlayground

...