MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como posso reter valores de comprimento zero durante a fase $unwind do pipeline agregado no Mongo?


Modifique seu project estágio no pipeline como abaixo:

A projection stage faz as duas coisas a seguir:
  • Se a matriz de itens for null ou does not exist , calcula o valor do campo de itens como [] (uma matriz vazia.)
  • Em seguida, verifica se o size dos items recém-calculados campo é 0 , se for 0 , altera seu valor para uma matriz com objeto padrão.

Código do palco:
db.MyCollection.aggregate([
...
{$project:{"_id":"$$ROOT",
           "items":{$cond:[
                          {$eq:[{$size:{$ifNull:["$items",[]]}},0]},
                          [{"quantity":0,"price":0}],
                          "$items"
                          ]}}},
{$unwind:"$items"},
...
])