आपको उस दूसरे एकत्रीकरण को ठीक करने और सभी UPIDs
प्राप्त करने की आवश्यकता है एक सरणी के रूप में। इसे प्राप्त करने के लिए आप $cond
का उपयोग कर सकते हैं और $type
पर आधारित या तो सरणी लौटाएं या $objectToArray
का उपयोग करें रूपांतरण चलाने के लिए, प्रयास करें:
db.Groups.aggregate([
{
$project: {
students: {
$cond: [
{ $eq: [ { $type: "$members.regularStudent" }, "array" ] },
"$members.regularStudent",
{ $map: { input: { "$objectToArray": "$members.regularStudent" }, as: "x", in: "$$x.v" } }
]
}
}
},
{
$unwind: "$students"
},
{
$group: {
_id: null,
UPIDs: { $addToSet: "$students" }
}
},
{
$project: {
members: {
$setDifference: [ userProductUPIDs , "$UPIDs" ]
},
_id : 0
}
}
])