MongoDB में $project + $filter: सरणी से शर्त-आधारित प्रोजेक्शन
$project स्टेज के भीतर $filter का उपयोग करके सरणी फ़ील्ड को नई सरणी से बदलें जिसमें केवल शर्त पूरी करने वाले तत्व हों। यह दस्तावेज़ संरचना को आकार देने का शक्तिशाली तरीका है।
नमूना डेटा
> db.demo355.insertOne({id: 101, details: [{"Name": "Chris", isMarried: 1}, {"Name": "David", isMarried: 0}, {"Name": "Mike", isMarried: 1}]});
{ "acknowledged": true, "insertedId": ObjectId("5e568928f8647eb59e5620c5") }
एग्रीगेशन: केवल isMarried=1 वाले तत्व रखें
> db.demo355.aggregate([
{$project: {
details: {$filter: {
input: "$details",
as: "out",
cond: {$eq: ["$$out.isMarried", 1]}
}}
}}
]);
परिणाम
{ "details": [{"Name": "Chris", "isMarried": 1}, {"Name": "Mike", "isMarried": 1}] }
केवल Chris और Mike (isMarried: 1) रखे गए; David (0) फ़िल्टर हो गया। as: "out" प्रत्येक तत्व के लिए चर नाम परिभाषित करता है, फिर $$out द्वारा संदर्भित किया जाता है। मूल दस्तावेज़ अपरिवर्तित रहता है।