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

Filtrer le tableau de sous-documents tout en renvoyant les données parentes si elles sont vides

Vous pouvez utiliser $redact au lieu de $match dans ce cas, comme ceci

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

Nous avons besoin de la première condition pour ignorer les documents de niveau supérieur, de la deuxième condition pour ignorer le deuxième niveau et de la troisième pour élaguer les véhicules. Pas besoin de $dérouler dans ce cas !

Encore une chose :$redact disponible uniquement en 2.6