MongoDB एग्रीगेशन में सबडॉक्यूमेंट फ़िल्टरिंग
$filter के साथ $addFields का उपयोग करके सरणी से केवल उन सबडॉक्यूमेंट्स को रखें जो विशिष्ट मानदंड (उदाहरण: isMarried: true) पूरे करते हैं।
नमूना डेटा
> db.demo345.insertOne({
"UserName": "Robert",
"UserDetails": [
{"isMarried": false, "CountryName": "US"},
{"isMarried": true, "CountryName": "UK"},
{"isMarried": false, "CountryName": "AUS"}
]
});
{ "acknowledged": true, "insertedId": ObjectId("5e5404fdf8647eb59e5620ac") }
एग्रीगेशन: केवल विवाहित (isMarried: true) रखें
> db.demo345.aggregate([
{$match: {UserName: "Robert"}},
{$addFields: {
UserDetails: {$filter: {
input: "$UserDetails",
cond: {$eq: ["$$this.isMarried", true]}
}}
}}
]);
परिणाम
{ "UserName": "Robert", "UserDetails": [{"isMarried": true, "CountryName": "UK"}] }
सरणी UserDetails अब केवल विवाहित सबडॉक्यूमेंट (UK) रखती है। मूल दस्तावेज़ अपरिवर्तित; एग्रीगेशन आउटपुट आकार बदलता है। $$this प्रत्येक सरणी तत्व को संदर्भित करता है।