MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Filtre a matriz de subdocumentos enquanto ainda retorna dados pai se estiver vazio


Você poderia usar $redact em vez de $match neste caso, assim
db.collectionName.aggregate({
  $redact:{
    $cond:{ 
       if:{$and:[{$not:"$dealerName"},{$not:"$title"},{$eq:["$listed",false]}, 
       then: "$$PRUNE", 
       else: "$$DESCEND" 
    }
  }
})

Precisamos da primeira condição para pular documentos de nível superior, segunda condição para pular o segundo nível e a terceira para podar veículos. Não é necessário $unwind nesse caso!

Mais uma coisa:$redact disponível apenas na versão 2.6