Podría usar $redact en lugar de $match en este caso, así
db.collectionName.aggregate({
$redact:{
$cond:{
if:{$and:[{$not:"$dealerName"},{$not:"$title"},{$eq:["$listed",false]},
then: "$$PRUNE",
else: "$$DESCEND"
}
}
})
Necesitamos la primera condición para omitir los documentos de nivel superior, la segunda condición para omitir el segundo nivel y la tercera para eliminar los vehículos. No se necesita $descanso en este caso!
Una cosa más:$redact disponible solo en 2.6