MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come posso mantenere i valori di lunghezza zero durante la fase $unwind della pipeline aggregata in Mongo?

Modifica il tuo project fase in cantiere come di seguito:

La projection stage fa le seguenti due cose:

  • Se l'array degli elementi è null o does not exist , calcola il valore del campo degli elementi come [] (un array vuoto.)
  • Avanti controlla se la size degli items appena calcolati il campo è 0 , se è 0 , quindi cambia il suo valore in un array con oggetto predefinito.

Codice stadio:

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