MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment puis-je conserver des valeurs de longueur nulle pendant la phase $unwind du pipeline agrégé dans Mongo ?

Modifiez votre project étape dans le pipeline comme ci-dessous :

La projection stage fait les deux choses suivantes :

  • Si le tableau des éléments est null ou does not exist , calcule la valeur du champ items comme [] (un tableau vide.)
  • Vérifie ensuite si la size des items juste calculés le champ est 0 , si c'est 0 , puis remplace sa valeur par un tableau avec un objet par défaut.

Code d'étape :

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