Première option --> Utiliser l'agrégation
Parce que certains des documents de votre collection peuvent ou non contenir des permissions
le champ ou le type n'est pas égal au tableau, c'est pourquoi vous obtenez cette erreur.
Vous pouvez trouver le $type
du champ et s'il ne s'agit pas d'un tableau ou n'existe pas dans votre document, vous pouvez l'ajouter en tant que tableau avec $addFields
et $cond
agrégation
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" ]
}
}
}
}}
])
Deuxième option -->
Accédez à votre shell mongo ou robomongo sur n'importe quelle interface graphique que vous utilisez et exécutez cette commande
db.collection.update(
{ "permissions": { "$ne": { "$type": "array" } } },
{ "$set": { "permissions": [] } },
{ "multi": true }
)