Ошибки объектов MongoDB на стадии конвейера

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

"Объект спецификации этапа конвейера должен содержать ровно одно поле.",

db.Flights.aggregate([
{$unwind: "$flights"},
{$project: 
    {_id: 0,
    status: 1,
    flights: 1
},

$match: {"status": "active"},
$group: {_id: {"flights" : "$flights.flight_id", "Month":       "$depart_info.month_name_long"}, 
avg_flights: {$avg: "$flights.count"}}}

])

1 ответ

Ваш конвейер агрегации несколько искажен; в частности, этапы $match и $group. Каждый этап должен быть документом JSON. Попробуйте следующее:

db.Flights.aggregate([
  {
      $unwind: "$flights"
  }, 
  {
    $project: {
      _id: 0,
      status: 1,
      flights: 1
    },
  },
  {
    $match: {
      "status": "active"
    }
  },
  {
    $group: {
      _id: {
          "flights": "$flights.flight_id",
          "Month": "$depart_info.month_name_long"
      },
      avg_flights: {
          $avg: "$flights.count"
      }
    }
  }
])
Другие вопросы по тегам