sql >> Database >  >> NoSQL >> MongoDB

Filter subdocumentarray terwijl u nog steeds bovenliggende gegevens retourneert indien leeg

Je zou in dit geval $redact kunnen gebruiken in plaats van $match, zoals dit

db.collectionName.aggregate({
  $redact:{
    $cond:{ 
       if:{$and:[{$not:"$dealerName"},{$not:"$title"},{$eq:["$listed",false]}, 
       then: "$$PRUNE", 
       else: "$$DESCEND" 
    }
  }
})

We hebben de eerste voorwaarde nodig om documenten op het hoogste niveau over te slaan, de tweede voorwaarde om het tweede niveau over te slaan en de derde om voertuigen te snoeien. Geen $unwind nodig in dit geval!

Nog een ding:$redact alleen beschikbaar in 2.6




  1. Meteor.js en Mongoose Compatibiliteit

  2. Hoe moet ik booleaanse waarden opslaan in mongodb?

  3. redis time-out met predis

  4. Hoe deze specifieke gegevens in deze gebruikersverzameling in mongodb bij te werken?