запрос mongodb с использованием агрегата по группе - PullRequest
0 голосов
/ 16 апреля 2020

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

мой код:

{
                    $lookup: {
                        from: 'manufacturers',
                        let: {
                            idmanufacturer: '$$CURRENT.manufacturer'
                        },
                        pipeline: [
                            {
                                $match: {
                                    $expr:{
                                        $and: { $eq: [ "$_id", "$$idmanufacturer" ] }
                                    }
                                }
                            }
                        ],
                        as: 'manufacturer'
                    }
                },
                {
                    $unwind: {
                        "path": "$manufacturer",
                        "preserveNullAndEmptyArrays": true
                    }
                },
                {   
                    $match:{
                        "dateOrder": { $gte: new  Date("2019-01-01"), $lt: new Date("2030-01-01") } 
                    }
                },
                {
                $group: {
                        _id: {date: {$dateToString: { format: "%Y-%m", date: "$dateOrder" }}, manufacturer :  "$manufacturer" },
                        nOrders: {$sum: 1}
                    }
                },
                {
                    $sort : { _id: 1 }
                }

результат:

"results": [
    {
        "_id": {
            "date": "2019-12",
            "manufacturer": {
                "_id": "5d7c39da5f673500121893c2",
                "status": "ACTIVE",
                "name": "RANDON",
                "type": "TRUCK_TRAILER",
                "__v": 0
            }
        },
        "nOrders": 1
    },
    {
        "_id": {
            "date": "2019-12",
            "manufacturer": {
                "_id": "5d7c39db5f673500121893d3",
                "status": "ACTIVE",
                "name": "VOLVO",
                "type": "TRUCK",
                "__v": 0
            }
        },
        "nOrders": 3
    },
    {
        "_id": {
            "date": "2020-01",
            "manufacturer": {
                "_id": "5d7c39da91712f0013d24ea6",
                "status": "ACTIVE",
                "name": "CHEVROLET",
                "type": "TRUCK",
                "__v": 0
            }
        },
        "nOrders": 2
    },
    {
        "_id": {
            "date": "2020-01",
            "manufacturer": {
                "_id": "5d7c39da91712f0013d24ea7",
                "status": "ACTIVE",
                "name": "GOTTI",
                "type": "TRUCK_TRAILER",
                "__v": 0
            }
        },
        "nOrders": 2
    },

]

я хотел бы, чтобы nOders оставался в коллекции _id, добавляя количество мануктур, сгруппированных по дате в месяцах-году

вот так

{
   "_id":{
      "date":"2019-12",
[
         "manufactures":         [
            {
               "manufacturer":{
                  "_id":"5d7c39da5f673500121893c2",
                  "status":"ACTIVE",
                  "name":"RANDON",
                  "type":"TRUCK_TRAILER",
                  "__v":0
               },
               "nOrders":5
            },
            {
               "manufacturer":{
                  "_id":"5d7c39da5f673500121893c2",
                  "status":"ACTIVE",
                  "name":"RANDON",
                  "type":"TRUCK_TRAILER",
                  "__v":0
               },
               "nOrders":5
            }
         ]
      }
   ]

если кто-то может мне помочь, я буду очень признателен

...