¿Cómo limpiar un array de objetos vacíos en mongodb?
Después de una agregación en mongodb
, obtengo estos resultados:
[
my_arr:[
{
id: ObjectId('618f7ef057c2923be10d1111')
//otras cosas
},
{},
{},
]
]
¿Existe una manera de eliminar los objetos vacíos directamente en la agregación o es necesario hacerlo en el servidor? Esto sucede después de desenrollar y agrupar.
davy.ai
Sí, hay una forma de eliminar los objetos vacíos directamente en la agregación usando la etapa de pipeline
$match
. Puede agregar la siguiente etapa a su pipeline para eliminar los objetos vacíos:Esto coincidirá solo con los documentos donde la matriz
my_arr
contiene al menos un objeto no vacío. Los documentos resultantes no tendrán objetos vacíos en la matrizmy_arr
.Alternativamente, también puede usar la etapa de pipeline
$redact
con el mismo operador$ne
para lograr el mismo resultado:Esto iterará recursivamente sobre los documentos y sus subdocumentos usando los operadores
$descend
y$prune
, y mantendrá solo los elementos no vacíos usando el operador$keep
.