Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB में सब-डॉक्यूमेंट के हर फील्ड का योग कैसे करें?

MongoDB एग्रीगेशन से सब-डॉक्यूमेंट के फील्ड्स का योग करना

MongoDB में एम्बेडेड डॉक्यूमेंट्स की ऐरे में किसी फील्ड के सभी वैल्यूज का योग करने के लिए एग्रीगेशन पाइपलाइन में $unwind और $group का उपयोग करें।

उदाहरण: सब-डॉक्यूमेंट्स ऐरे वाला डॉक्यूमेंट बनाना

> db.sumEveryFieldDemo.insertOne(
...   {
...     "_id":101,
...     "PlayerDetails": [
...       {"PlayerName":"John","PlayerScore":1000},
...       {"PlayerName":"Carol","PlayerScore":2000},
...       {"PlayerName":"Sam","PlayerScore":3000}
...     ]
...   }
... );
{ "acknowledged" : true, "insertedId" : 101 }

डॉक्यूमेंट देखना

> db.sumEveryFieldDemo.find().pretty();

आउटपुट:

{ "_id" : 101, "PlayerDetails" : [ { "PlayerName" : "John", "PlayerScore" : 1000 }, { "PlayerName" : "Carol", "PlayerScore" : 2000 }, { "PlayerName" : "Sam", "PlayerScore" : 3000 } ] }

सभी PlayerScore का योग करना

> db.sumEveryFieldDemo.aggregate([
...   { $unwind: "$PlayerDetails" },
...   { $group: {
...     _id: '$_id',
...     sum: { $sum: '$PlayerDetails.PlayerScore' }
...   }}
... ]).pretty();

आउटपुट:

{ "_id" : 101, "sum" : 6000 }

पाइपलाइन समझ:

  1. $unwind: "$PlayerDetails" - ऐरे के प्रत्येक एलिमेंट के लिए अलग डॉक्यूमेंट बनाता है
  2. $group - _id द्वारा ग्रुप करके $sum से PlayerScore जोड़ता है

वेरिएशन्स:

  • मल्टीपल फील्ड्स का योग: { sum1: {$sum: "$field1"}, sum2: {$sum: "$field2"} }
  • शर्त के साथ योग: { $sum: { $cond: [{ $gt: ["$score", 100] }, "$score", 0] } }
  • MongoDB 3.2+ में $project में $sum सीधे ऐरे पर उपयोग कर सकते हैं
  1. - MongoDB में सब-डॉक्यूमेंट द्वारा सब-डॉक्यूमेंट्स फ़िल्टर करें

    इसके लिए, $unwind के साथ aggregate() का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo583.insert([ { details1: [ { details2: [ { isMarried: true, Name: Chris }, { isMarried: true, Name: Bob }

  1. - MongoDB में दस्तावेज फील्ड मानों से मान घटाएं (TotalPrice - Discount)

    दस्तावेज फील्ड मानों से मान घटाने के लिए, MongoDB aggregate() में $subtract का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo599.insertOne({TotalPrice:250,DiscountPrice:35}); { acknowledged : true, insertedId : ObjectId(5e948192f5f1e70e134e2696) } > db.demo599.insertOne({To

  1. - MongoDB में विशिष्ट फ़ील्ड न रखने वाले दस्तावेज़ ढूंढना

    किसी फ़ील्ड की अनुपस्थिति जांचने के लिए $exists: false का उपयोग करें। डेमो डेटा db.demo612.insertOne({id:1,Info:[{Name:Chris,Age:21},{Name:David}]}); क्वेरी db.demo612.aggregate([ {$unwind: $Info}, {$match: {Info.Age:{$exists: false}}}, {$project: {Info.Name: 1}} ]) परिणाम { _id : Obj