MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie kann ich während der $unwind-Phase der aggregierten Pipeline in Mongo Null-Werte beibehalten?

Ändern Sie Ihr project Stufe in der Pipeline wie folgt:

Die projection stage macht die folgenden zwei Dinge:

  • Wenn das Items-Array null ist oder does not exist , berechnet den Elementfeldwert als [] (ein leeres Array.)
  • Als nächstes prüft, ob die size der gerade berechneten items Feld ist 0 , wenn es 0 ist , ändert dann seinen Wert in ein Array mit dem Standardobjekt.

Phasencode:

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