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

MongoDB एकत्रीकरण:पिछली पंक्तियों के योग से रनिंग टोटल की गणना करें

यह वही करता है जो आपको चाहिए। मैंने डेटा में समय को सामान्य कर दिया है ताकि वे एक साथ समूह कर सकें (आप ऐसा कुछ कर सकते हैं)। विचार $group . के लिए है और time को पुश करें और total अलग सरणियों में है। फिर $unwind time सरणी, और आपने totals . की एक प्रति बना ली है प्रत्येक time . के लिए सरणी दस्तावेज़। फिर आप runningTotal . की गणना कर सकते हैं (या रोलिंग औसत जैसा कुछ) अलग-अलग समय के लिए सभी डेटा वाले सरणी से। $unwind . द्वारा जनरेट किया गया 'इंडेक्स' total . के लिए सरणी अनुक्रमणिका है उस time . के अनुरूप . $sort . करना महत्वपूर्ण है $unwind . से पहले क्योंकि यह सुनिश्चित करता है कि सरणियाँ सही क्रम में हैं।

db.temp.aggregate(
    [
        {
            '$group': {
                '_id': '$time',
                'total': { '$sum': '$value' }
            }
        },
        {
            '$sort': {
                 '_id': 1
            }
        },
        {
            '$group': {
                '_id': 0,
                'time': { '$push': '$_id' },
                'totals': { '$push': '$total' }
            }
        },
        {
            '$unwind': {
                'path' : '$time',
                'includeArrayIndex' : 'index'
            }
        },
        {
            '$project': {
                '_id': 0,
                'time': { '$dateToString': { 'format': '%Y-%m-%d', 'date': '$time' }  },
                'total': { '$arrayElemAt': [ '$totals', '$index' ] },
                'runningTotal': { '$sum': { '$slice': [ '$totals', { '$add': [ '$index', 1 ] } ] } },
            }
        },
    ]
);

मैंने ~ 80,000 दस्तावेजों के साथ एक संग्रह पर कुछ इसी तरह का उपयोग किया है, जो 63 परिणामों को मिलाकर है। मुझे यकीन नहीं है कि यह बड़े संग्रहों पर कितनी अच्छी तरह काम करेगा, लेकिन मैंने पाया है कि समेकित डेटा पर प्रदर्शन रूपांतरण (अनुमान, सरणी जोड़तोड़) एक बार डेटा को प्रबंधनीय आकार में कम करने के बाद बड़ी प्रदर्शन लागत नहीं लगती है।

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB और अन्य NoSQL DB में PII मास्किंग के माध्यम से…

  2. एकत्रीकरण प्रश्नों पर MongoDB का प्रदर्शन

  3. मोंगो डीबी किसी भी मूल्य के साथ क्षेत्र के नाम से खोजें

  4. MongoDB $project:पिछले पाइपलाइन फ़ील्ड को बनाए रखें

  5. AWS पर MongoDB:अपने MongoDB सर्वर के लिए सही EC2 इंस्टेंस प्रकार कैसे चुनें?