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

MongoDB नेस्टेड $group और $sum: समान ProductID वाले स्टॉक की गिनती कैसे प्राप्त करें?


MongoDB में $group का उपयोग निर्दिष्ट _id एक्सप्रेशन द्वारा इनपुट दस्तावेज़ों को ग्रुप करने के लिए किया जाता है। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं:

> db.demo466.insertOne( ... { ... ... "ProductPrice" :150, ... "ProductQuantity" : 1, ... "ProductName" : "Product-1", ... "ActualAmount" :110, ... "ProductProfit" : 40, ... "ProductId" : 1 ... } ... ); {    "acknowledged" : true,    "insertedId" : ObjectId("5e80477cb0f3fa88e2279066") } > > db.demo466.insertOne( ... { ... ... "ProductPrice" :150, ... "ProductQuantity" : 1, ... "ProductName" : "Product-1", ... "ActualAmount" :110, ... "ProductProfit" : 40, ... "ProductId" : 2 ... } ... ); {    "acknowledged" : true,    "insertedId" : ObjectId("5e80477db0f3fa88e2279067") } > db.demo466.insertOne( ... { ... ... "ProductPrice" :170, ... "ProductQuantity" : 2, ... "ProductName" : "Product-2", ... "ActualAmount" :130, ... "ProductProfit" : 50, ... "ProductId" : 3 ... } ... ); {    "acknowledged" : true,    "insertedId" : ObjectId("5e80477eb0f3fa88e2279068") }

सभी दस्तावेज़ प्रदर्शित करें

> db.demo466.find();

आउटपुट:

{ "_id" : ObjectId("5e80477cb0f3fa88e2279066"), "ProductPrice" : 150, "ProductQuantity" : 1, "ProductName" : "Product-1", "ActualAmount" : 110, "ProductProfit" : 40, "ProductId" : 1 } { "_id" : ObjectId("5e80477db0f3fa88e2279067"), "ProductPrice" : 150, "ProductQuantity" : 1, "ProductName" : "Product-1", "ActualAmount" : 110, "ProductProfit" : 40, "ProductId" : 2 } { "_id" : ObjectId("5e80477eb0f3fa88e2279068"), "ProductPrice" : 170, "ProductQuantity" : 2, "ProductName" : "Product-2", "ActualAmount" : 130, "ProductProfit" : 50, "ProductId" : 3 }

नेस्टेड $group और $sum का उपयोग करने की क्वेरी

> db.demo466.aggregate([ ... { ...    '$group': { ...       '_id': { ...          'ProductName': '$ProductName', ...       }, ...       'ActualAmount': {'$sum': '$ActualAmount'}, ...       'ProductQuantity': {'$sum': '$ProductQuantity'}, ...       'ProductId': {'$addToSet': '$ProductId'}, ...    }, ... }, ... { ...    '$project': { ...       'ProductQuantity': true, ...       'ActualAmount': true, ...       'NumberOfProductInStock': {'$size': '$ProductId'} ...    } ... }])

आउटपुट

{ "_id" : { "ProductName" : "Product-2" }, "ActualAmount" : 130, "ProductQuantity" : 2, "NumberOfProductInStock" : 1 } { "_id" : { "ProductName" : "Product-1" }, "ActualAmount" : 220, "ProductQuantity" : 2, "NumberOfProductInStock" : 2 }

  1. - MongoDB में दो तारीखों के बीच और विशिष्ट मान के साथ डेटा प्राप्त करें। ग्रुप करके योग और गिनती प्राप्त करें?

    MongoDB में डेटा फ़िल्टर करने के लिए $match का उपयोग करें और दो तारीखों के बीच डेटा प्राप्त करने के लिए $gte और $lte ऑपरेटर्स का उपयोग करें। आइए एक कलेक्शन बनाते हैं जिसमें डॉक्यूमेंट्स हों: > db.demo560.insertOne({value1:40,value2:40,shippingDate:new ISODate(2020-02-26)}); { acknowledged : true

  1. - MongoDB में ID द्वारा सॉर्ट करें और आइटम्स को रिवर्स करें

    $natural ऑपरेटर दस्तावेजों को नेचुरल ऑर्डर (सम्मिलन क्रम) में लौटाता है। आइटम्स को रिवर्स करने के लिए $natural:-1 का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo710.insertOne({id:101,Name:Robert}); { acknowledged : true, insertedId : ObjectId(5ea83a855d33e20ed1097b7a) } >

  1. - MongoDB में $group ऑपरेशन में सॉर्ट करके केवल पहले दो फील्ड प्राप्त करें

    आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo576.insertOne({id:101,Name:Chris,Marks:45}) { acknowledged : true, insertedId : ObjectId(5e916c3b581e9acd78b427fa) } > db.demo576.insertOne({id:101,Name:John,Marks:55}) { acknowledged : true, insertedId : ObjectId(5e916c43581e9acd78b427fb)