MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

मोंगोडब-नोडज ड्राइवर में दायर किए गए सभी का योग प्रदर्शित करना

आप इसे एकत्रीकरण पाइपलाइन के साथ कर सकते हैं। यहाँ नोड के लिए निर्यात किया गया कोड है:


    [
      {
        '$match': {
          '$or': [
            {
              'orderCreatedForDate': new Date('Fri, 31 Jan 2020 05:00:00 GMT')
            }, {
              'orderCreatedForDate': new Date('Fri, 24 Jan 2020 05:00:00 GMT')
            }
          ]
        }
      }, {
        '$unwind': {
          'path': '$totalOrder', 
          'includeArrayIndex': 'string'
        }
      }, {
        '$group': {
          '_id': {
            'productCode': '$totalOrder.productCode', 
            'date': '$orderCreatedForDate'
          }, 
          'tradeCopies': {
            '$sum': '$totalOrder.tradeCopies'
          }, 
          'subscriptionCopies': {
            '$sum': '$totalOrder.subscriptionCopies'
          }, 
          'freeCopies': {
            '$sum': '$totalOrder.freeCopies'
          }, 
          'institutionalCopies': {
            '$sum': '$totalOrder.institutionalCopies'
          }, 
          'productCode': {
            '$last': '$totalOrder.productCode'
          }, 
          'publicationName': {
            '$last': '$totalOrder.publicationName'
          }, 
          'editionName': {
            '$last': '$totalOrder.editionName'
          }, 
          'publicationDate': {
            '$last': '$orderCreatedForDate'
          }
        }
      }, {
        '$sort': {
          'publicationDate': 1
        }
      }, {
        '$group': {
          '_id': '$_id.productCode', 
          'tradeCopies': {
            '$last': '$tradeCopies'
          }, 
          'previousTradeCopies': {
            '$first': '$tradeCopies'
          }, 
          'subscriptionCopies': {
            '$last': '$subscriptionCopies'
          }, 
          'previousSubscriptionCopies': {
            '$first': '$subscriptionCopies'
          }, 
          'institutionalCopies': {
            '$last': '$institutionalCopies'
          }, 
          'previousInstitutionalCopies': {
            '$first': '$institutionalCopies'
          }, 
          'freeCopies': {
            '$last': '$freeCopies'
          }, 
          'previousFreeCopies': {
            '$first': '$freeCopies'
          }, 
          'productCode': {
            '$last': '$productCode'
          }, 
          'publicationName': {
            '$last': '$publicationName'
          }, 
          'editionName': {
            '$last': '$editionName'
          }, 
          'publicationDate': {
            '$last': '$publicationDate'
          }
        }
      }, {
        '$project': {
          'productCode': 1, 
          'publicationName': 1, 
          'editionName': 1, 
          'publicationDate': 1, 
          'tradeCopies': 1, 
          'subscriptionCopies': 1, 
          'institutionalCopies': 1, 
          'freeCopies': 1, 
          'previousWeekCopies': [
            {
              'tradeCopies': '$previousTradeCopies', 
              'subscriptionCopies': '$previousSubscriptionCopies', 
              'freeCopies': '$previousFreeCopies', 
              'institutionalCopies': '$previousInstitutionalCopies'
            }
          ]
        }
      }
    ]

आइए एक नज़र डालते हैं कि प्रत्येक चरण में क्या हो रहा है:


    [{$match: {
      $or: [ {orderCreatedForDate: ISODate('2020-01-31T05:00:00.000+00:00')},
      {orderCreatedForDate: ISODate('2020-01-24T05:00:00.000+00:00')}]
    }}, 

हम उन आदेशों के मिलान से शुरू करते हैं जिनमें वे तिथियां होती हैं जिनकी हम परवाह करते हैं।

    {$unwind: {
      path: "$totalOrder",
      includeArrayIndex: 'string'
    }}, 

फिर हम TotalOrder ऐरे को खोल देते हैं। यह प्रत्येक आदेश के लिए एक दस्तावेज़ बनाता है।


    {$group: {
      _id: {productCode: "$totalOrder.productCode", date: "$orderCreatedForDate"},
      tradeCopies: {
        $sum: "$totalOrder.tradeCopies"
      },
      subscriptionCopies: {
        $sum: "$totalOrder.subscriptionCopies"
      },
      freeCopies: {
        $sum: "$totalOrder.freeCopies"
      },
      institutionalCopies: {
        $sum: "$totalOrder.institutionalCopies"
      },
      productCode: { $last: "$totalOrder.productCode"},
      publicationName: { $last: "$totalOrder.publicationName"},
      editionName: { $last: "$totalOrder.editionName"},
      publicationDate: { $last: "$orderCreatedForDate"}
    }}, 

फिर हम दस्तावेज़ों को उत्पाद कोड और दिनांक के अनुसार समूहित करते हैं। यह हमें आवश्यक राशि उत्पन्न करने की अनुमति देता है।


    {$sort: {
      publicationDate: 1
    }}, 

फिर हम अपने दस्तावेज़ों को क्रमबद्ध करते हैं ताकि हमें पता चले कि पुराने दस्तावेज़ पहले हैं।


    {$group: {
      _id: "$_id.productCode",
      tradeCopies: {
        $last: "$tradeCopies"
      },
      previousTradeCopies: {
        $first: "$tradeCopies"
      },
      subscriptionCopies: {
        $last: "$subscriptionCopies"
      },
      previousSubscriptionCopies: {
        $first: "$subscriptionCopies"
      },
      institutionalCopies: {
        $last: "$institutionalCopies"
      },
      previousInstitutionalCopies: {
        $first: "$institutionalCopies"
      },
      freeCopies: {
        $last: "$freeCopies"
      },
      previousFreeCopies: {
        $first: "$freeCopies"
      },
      productCode: { $last: "$productCode"},
      publicationName: { $last: "$publicationName"},
      editionName: { $last: "$editionName"},
      publicationDate: { $last: "$publicationDate"}
    }}, 

इसके बाद हम अपने दस्तावेज़ों को उत्पाद कोड के आधार पर समूहबद्ध करते हैं ताकि हम प्रत्येक उत्पाद कोड के लिए एक दस्तावेज़ बना सकें।


    {$project: {
      productCode: 1,
      publicationName: 1,
      editionName: 1,
      publicationDate: 1,
      tradeCopies: 1,
      subscriptionCopies: 1,
      institutionalCopies: 1,
      freeCopies: 1,
      previousWeekCopies: [{
        tradeCopies: "$previousTradeCopies",
        subscriptionCopies: "$previousSubscriptionCopies",
        freeCopies: "$previousFreeCopies",
        institutionalCopies: "$previousInstitutionalCopies"
      }
        ]
    }}]

अंत में, हम उन क्षेत्रों को प्रोजेक्ट करते हैं जिनकी हमें आवश्यकता होती है, जिस प्रारूप में हमें उनकी आवश्यकता होती है।

यहां कुछ स्क्रीनशॉट दिए गए हैं ताकि आप देख सकें कि प्रत्येक चरण में क्या हो रहा है।

Node.js के साथ एग्रीगेशन पाइपलाइन का उपयोग करने के तरीके के बारे में अधिक जानने के लिए, देखें https://www.mongodb.com/blog/post/quick-start-nodejs--mongodb--how-to-analyze-data- एकत्रीकरण-ढांचे का उपयोग करना . मैं एकत्रीकरण पाइपलाइन पर MongoDB विश्वविद्यालय के मुफ्त पाठ्यक्रम की भी अत्यधिक अनुशंसा करता हूं:https://university.mongodb। कॉम/पाठ्यक्रम/एम121/के बारे में




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoError अज्ञात शीर्ष स्तरीय ऑपरेटर:$set

  2. $सप्ताह समारोह और एकत्रीकरण में सप्ताह का पहला दिन

  3. MongoDB को जोड़ना और बनाना SQL का उपयोग करके जुड़ता है:भाग 2

  4. मोंगोडब - $ समूह एक $ समूह के अंदर ('कुंजी' द्वारा)

  5. डॉकर और मोंगो-गो-ड्राइवर सर्वर चयन त्रुटि