आपको $map का उपयोग करना होगा बाहरी सरणी को स्कैन करने के लिए और $filter को स्कैन करने के लिए आंतरिक सरणी के तत्वों की तुलना $max से करने के लिए दिनांक:
db.collection.aggregate([
{
$addFields: {
inquiries: {
$map: {
input: "$inquiries",
as: "inquiry",
in: {
inquiryId: "$$inquiry.inquiryId",
routeHistory: {
$filter: {
input: "$$inquiry.routeHistory",
cond: {
$eq: [ { $max: "$$inquiry.routeHistory.routeDate" }, "$$this.routeDate" ]
}
}
}
}
}
}
}
}
])
संपादित करें:आपके लिंक को देखकर मैंने देखा है कि $map
समर्थित नहीं है, आप समाधान के रूप में नीचे दिए गए संयोजन का उपयोग कर सकते हैं:
db.collection.aggregate([
{
$unwind: "$inquiries"
},
{
$addFields: {
"inquiries.routeHistory": {
$filter: {
input: "$inquiries.routeHistory",
cond: {
$eq: [ { $max: "$inquiries.routeHistory.routeDate" }, "$$this.routeDate" ]
}
}
}
}
},
{
$group: {
_id: "$_id",
callId: { $first: "$callId" },
caller: { $first: "$caller" },
inquiries: { $push: "$inquiries" }
}
}
])