Primeira opção --> Usar agregação
Porque alguns dos documentos em sua coleção podem ou não conter
permissions
campo ou o tipo não é igual ao array, é por isso que você está recebendo esse erro. Você pode encontrar o
$type
do campo e se não for um array ou não existir no seu documento, você pode adicioná-lo como um array com $addFields
e $cond
agregação db.collection.aggregate([
{ "$addFields": {
"permissions": {
"$cond": {
"if": {
"$ne": [ { "$type": "$permissions" }, "array" ]
},
"then": [],
"else": "$permissions"
}
}
}},
{ "$project": {
"filteredChildren": {
"$filter": {
"input": "$moduleChildren",
"as": "moduleChild",
"cond": {
"$in": [ "$$moduleChild._id", "$permissions" ]
}
}
}
}}
])
Segunda opção -->
Vá para o seu shell mongo ou robomongo em qualquer GUI que você esteja usando e execute este comando
db.collection.update(
{ "permissions": { "$ne": { "$type": "array" } } },
{ "$set": { "permissions": [] } },
{ "multi": true }
)