MongoDB एग्रीगेशन: दो फ़ील्ड का जोड़ निकालकर उससे क्वेरी करना
$add ऑपरेटर से दो फ़ील्ड का योग निकालें, फिर $match से उस योग के आधार पर फ़िल्टर करें।
कलेक्शन बनाएं और डॉक्यूमेंट इन्सर्ट करें
> db.searchDocumentsDemo.insertOne({"Value1": 100, "Value2": 560});
{ "acknowledged": true, "insertedId": ObjectId("5cd3fe1eedc6604c74817ce9") }
> db.searchDocumentsDemo.insertOne({"Value1": 300, "Value2": 150});
{ "acknowledged": true, "insertedId": ObjectId("5cd3fe29edc6604c74817cea") }
> db.searchDocumentsDemo.insertOne({"Value1": 400, "Value2": 200});
{ "acknowledged": true, "insertedId": ObjectId("5cd3fe30edc6604c74817ceb") }
> db.searchDocumentsDemo.insertOne({"Value1": 190, "Value2": 210});
{ "acknowledged": true, "insertedId": ObjectId("5cd3fe45edc6604c74817cec") }
सभी डॉक्यूमेंट देखें
> db.searchDocumentsDemo.find().pretty();
{ "_id": ObjectId("5cd3fe1eedc6604c74817ce9"), "Value1": 100, "Value2": 560 }
{ "_id": ObjectId("5cd3fe29edc6604c74817cea"), "Value1": 300, "Value2": 150 }
{ "_id": ObjectId("5cd3fe30edc6604c74817ceb"), "Value1": 400, "Value2": 200 }
{ "_id": ObjectId("5cd3fe45edc6604c74817cec"), "Value1": 190, "Value2": 210 }
एग्रीगेशन: कुल वैल्यू (Value1 + Value2) < 500 वाले डॉक्यूमेंट
> db.searchDocumentsDemo.aggregate([
{$project: {totalValue: {$add: ["$Value1", "$Value2"]}}},
{$match: {totalValue: {$lt: 500}}}
]);
{ "_id": ObjectId("5cd3fe29edc6604c74817cea"), "totalValue": 450 }
{ "_id": ObjectId("5cd3fe45edc6604c74817cec"), "totalValue": 400 }
गणना विवरण
| Value1 | Value2 | योग | < 500? |
|---|---|---|---|
| 100 | 560 | 660 | नहीं |
| 300 | 150 | 450 | हां ✓ |
| 400 | 200 | 600 | नहीं |
| 190 | 210 | 400 | हां ✓ |
पाइपलाइन समझें
$project- नया फ़ील्डtotalValueबनाता है:$add: ["$Value1", "$Value2"]$match-totalValueपर फ़िल्टर:{$lt: 500}
विस्तार: मूल फ़ील्ड भी रखें
db.searchDocumentsDemo.aggregate([
{$project: {Value1: 1, Value2: 1, totalValue: {$add: ["$Value1", "$Value2"]}}},
{$match: {totalValue: {$lt: 500}}}
])