Скрытие пустых полей при агрегировании

Есть три коллекции

party

{ "_id" : "2", "name" : "party2" }
{ "_id" : "1", "name" : "party1" }

address

{ "_id" : "a1", "street" : "Address1", "party_id" : "1" }

addressComment

{ "_id" : "ac2", "address_id" : "a1", "comment" : "Comment2" }
{ "_id" : "ac1", "address_id" : "a1", "comment" : "Comment1" }

Если сделать aggregate:

[
{ $lookup: 
    {
       "from" : "address",
       "let" : {
       "partyId" : "$_id"},
       "pipeline" : [
        {
           "$match" : {
               "$expr" : {
                   "$and" : [
                       {
                           "$eq" : [
                               "$party_id", 
                               "$$partyId"
                           ]
                       }
                    ]
                }
            }
          }], 
          "as" : "address"
        }
    },
{ 
   $lookup: 
    {
       "from" : "addressComment",
       "let" : {
       "addressId" : "$_id"},
       "pipeline" : [
        {
           "$match" : {
               "$expr" : {
                   "$and" : [
                       {
                           "$eq" : [
                               "$address_id", 
                               "$$addressId"
                           ]
                       }
                    ]
                }
            }
          }], 
          "as" : "address.comments"
        }
    },
{
    $unwind: 
    {
       path: "$address",
       reserveNullAndEmptyArrays: true
    }
}
]

В итоге получим массив с документами

[
    { 
          "_id" : "1",
          "name" : "party1",
          "address":
              { "_id": "a1",
                "street": "Address1",
                "party_id": "1",
                "comments": [
                    { "_id" : "ac2", "address_id" : "a1", "comment" : "Comment2" }
                    { "_id" : "ac1", "address_id" : "a1", "comment" : "Comment1" }
                ]}
    },
    {
        "_id": "2",
        "name": "party2",
        "address": {
           comments: [] // Пустой массив 
        }
    }
]

$unwind reserveNullAndEmptyArrays: true должен убирать поле address из результата, если оно пустое, но поскольку в party1 подтягивается пустой массив comments, то получается:

"address": {
           comments: []
        }

Как исключить поле address из результата в такой ситуации ?


Ответы (0 шт):