sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur kan jag behålla nolllängdsvärden under $unwind-fasen av den samlade pipelinen i Mongo?

Ändra ditt project steg i pipelinen enligt nedan:

projection scenen gör följande två saker:

  • Om objektmatrisen är null eller does not exist , beräknar objektfältets värde som [] (en tom array.)
  • Nästa kontrollerar om size av de just beräknade items fältet är 0 , ifit är 0 , ändrar sedan dess värde till en array med standardobjekt.

Scenkod:

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



  1. Kan inte ansluta till MongoDB på grund av fel URI

  2. Inkapslar Unicode från redis

  3. Mongoose:Hur uppdaterar man ett befintligt element i array?

  4. Akka och ReactiveMongo