sql >> Base de Datos >  >> NoSQL >> MongoDB

Filtre la matriz de subdocumentos mientras aún devuelve los datos principales si está vacío

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