MongoDB एग्रीगेशन में सरणी फ़िल्टरिंग: रेंज आधारित
$addFields के साथ $filter का उपयोग करके सरणी को स्थानांतरित रूप से फ़िल्टर करें, केवल उन तत्वों को रखें जो रेंज शर्तें (उदाहरण: $gt और $lt) पूरी करते हैं।
नमूना डेटा
> db.demo351.insertOne({
_id: "101",
ProductDetails: [
{ProductName: "Product-1", ProductPrice: 500},
{ProductName: "Product-2", ProductPrice: 400}
]
});
{ "acknowledged": true, "insertedId": "101" }
> db.demo351.insertOne({
_id: "102",
ProductDetails: [
{ProductName: "Product-3", ProductPrice: 200},
{ProductName: "Product-4", ProductPrice: 800}
]
});
{ "acknowledged": true, "insertedId": "102" }
एग्रीगेशन: _id "102" के लिए Price 600-900 के बीच वाले उत्पाद
> db.demo351.aggregate([
{$match: {_id: "102"}},
{$addFields: {
ProductDetails: {$filter: {
input: "$ProductDetails",
cond: {$and: [{$gt: ["$$this.ProductPrice", 600]}, {$lt: ["$$this.ProductPrice", 900]}]}
}}
}}
]);
परिणाम
{ "_id": "102", "ProductDetails": [{"ProductName": "Product-4", "ProductPrice": 800}] }
केवल Product-4 (Price 800) रेंज में है। $match पहले दस्तावेज़ फ़िल्टर करता है, फिर $addFields + $filter सरणी को आकार देता है। $$this वर्तमान सरणी तत्व को संदर्भित करता है।