Как поместить результаты Mongodb в массив? - PullRequest
0 голосов
/ 06 августа 2020

У меня есть коллекция в моей базе данных MongoDB:

/*Order:*/
{
item: 'banana',
price: '2$',
order_type: INTERNATIONAL // There are 2 types: INTERNATIONAL and MAINLAND
}

Я делаю групповой этап, чтобы сгруппировать все заказы с типом INTERNATIONAL и MAINLAND, а затем подсчитать общее количество каждого типа заказа.

db.getCollection('get_card_request').aggregate([
    {$group: {
        _id: '$order_type',
        nbOfOrders: {$sum: 1}    
    }}
])

Я получил следующие результаты:

/* 1 */
{
    "_id" : "MAINLAND",
    "nbOfOrder" : 3.0
}

/* 2 */
{
    "_id" : "INTERNATIONAL",
    "nbOfOrder" : 2.0
}

Я хочу поместить результаты после группового этапа в массив, но я не знаю, как это сделать. Я хочу получить такой результат:

{
orderTypeCount: [
{
    "_id" : "MAINLAND",
    "nbOfOrder" : 3.0
},
{
    "_id" : "INTERNATIONAL",
    "nbOfOrder" : 2.0
}
],
... // the other fields
}

1 Ответ

0 голосов
/ 06 августа 2020

воспроизведение

db.collection.aggregate([
  {
    $group: {
      _id: "$order_type",
      nbOfOrders: {
        $sum: 1
      }
    }
  },
  {
    "$group": {
      "_id": null,
      "orderTypeCount": {
        "$push": "$$ROOT"
      }
    }
  },
  {
    $project: {
      "_id": 0
    }
  }
])

Я отправил все данные из предыдущего конвейера в переменную массива.

...