आप $filter
का उपयोग कर सकते हैं $map
के साथ अपने डेटा को नया आकार देने और _id
. द्वारा फ़िल्टर करने के लिए . फिर आप $push
का इस्तेमाल करना जारी रख सकते हैं $ifNull
के साथ यदि कोई सरणी खाली है तो डिफ़ॉल्ट मान प्रदान करने के लिए:
db.collection.aggregate([
{
$addFields: {
employeeResponses: {
$map: {
input: {
$filter: {
input: "$employeeResponses",
cond: {
$eq: [ "$$this._id", "5d978d372f263f41cc624727"]
}
}
},
in: "$$this.response"
}
}
}
},
{
$group: {
_id: null,
responses: { $push: { $ifNull: [ { $arrayElemAt: [ "$employeeResponses", 0 ] }, "No response" ] } }
}
}
])