पहला विकल्प --> एकत्रीकरण का उपयोग करें
क्योंकि आपके संग्रह के कुछ दस्तावेज़ों में permissions
. हो भी सकती है और नहीं भी हो सकती है फ़ील्ड या प्रकार सरणी के बराबर नहीं है इसलिए आपको यह त्रुटि मिल रही है।
आपको $type
मिल सकता है फ़ील्ड का और यदि यह आपके दस्तावेज़ में कोई सरणी नहीं है या मौजूद नहीं है, तो आप इसे $addFields
के साथ एक सरणी के रूप में जोड़ सकते हैं और $cond
एकत्रीकरण
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" ]
}
}
}
}}
])
दूसरा विकल्प -->पी>
आप जिस जीयूआई का उपयोग कर रहे हैं उस पर अपने मोंगो शेल या रोबोमोंगो पर जाएं और इस कमांड को चलाएं
db.collection.update(
{ "permissions": { "$ne": { "$type": "array" } } },
{ "$set": { "permissions": [] } },
{ "multi": true }
)