MongoDB में $addFields + $filter: सरणी को फ़िल्टर करके आकार देना
$addFields स्टेज नए फ़ील्ड्स जोड़ता है या मौजूदा फ़ील्ड्स को ओवरराइट करता है। इसके साथ $filter का उपयोग करके सरणी से केवल शर्त पूरी करने वाले तत्वों को रखें।
नमूना डेटा
> db.demo334.insertOne({
"Name": "Chris", "Age": 21,
"details": [{"Subject": "MySQL", "Score": 78}, {"Subject": "MongoDB", "Score": 45}]
});
{ "acknowledged": true, "insertedId": ObjectId("5e52241bf8647eb59e562090") }
एग्रीगेशन: Score >= 70 वाले तत्व रखें
> db.demo334.aggregate([
{$addFields: {
details: {$filter: {
input: "$details",
as: "out",
cond: {$gte: ["$$out.Score", 70]}
}}
}}
]);
परिणाम
{ "Name": "Chris", "Age": 21, "details": [{"Subject": "MySQL", "Score": 78}] }
केवल MySQL (Score 78) रखा गया; MongoDB (Score 45) फ़िल्टर हो गया। $$out प्रत्येक सरणी तत्व को संदर्भित करता है। मूल दस्तावेज़ अपरिवर्तित रहता है; एग्रीगेशन केवल आउटपुट आकार बदलता है।