Можете да използвате $redact вместо $match в този случай, като това
db.collectionName.aggregate({
$redact:{
$cond:{
if:{$and:[{$not:"$dealerName"},{$not:"$title"},{$eq:["$listed",false]},
then: "$$PRUNE",
else: "$$DESCEND"
}
}
})
Нуждаем се от първо условие, за да прескочим документи от най-високо ниво, второ условие, за да прескочим второ ниво и трето, за да изрежем превозни средства. Не е необходимо $unwind в този случай!
Още нещо:$redact се предлага само във 2.6