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

MongoDB:क्या एकत्रीकरण का उपयोग करके मूल्य प्रवृत्ति का पता लगाने का कोई तरीका है?

मोटे तौर पर रूपरेखा:मैं दस मिनट की अवधि के लिए औसत की गणना करूंगा:

> var avgCursor = db.sensor_readings.aggregate([
    { "$match" : { "created_at" : { "$gt" : ten_minutes_ago, "$lte" : now } } }
    { "$group" : { "_id" : 0, "average" : { "$avg" : "$value" } } }
]}
> var avgDoc = avgCursor.toArray()[0]
> avgDoc
{ "_id" : 0, "average" : 23 }

फिर मैं इसे दूसरे संग्रह में संग्रहीत करूंगा:

> db.sensor_averages.insert({ "start" : ten_minutes_ago, "end" : now, "average" : avgDoc.average })

अंत में, उन दो औसतों को याद करें जिनकी आपको अंतर की गणना करने और इसकी गणना करने की आवश्यकता है:

> var diffCursor = db.sensor_averages.find({ "start" : { "$gte" : twenty_minutes_ago } }).sort({ "start" : -1 })
> var diffArray = diffCursor.toArray()
> var difference = diffArray[0].average - diffArray[1].average

आप आवधिक एकत्रीकरण को छोड़ भी सकते हैं और इसके बजाय sensor_averages में एक रनिंग एवरेज अपडेट कर सकते हैं , हर 10 मिनट में एक नए डॉक्टर पर कूदना। प्रत्येक 10 मिनट की अवधि की शुरुआत में, sensor_averages . में डालें एक दस्तावेज़

{
    "start" : now,
    "svalues" : 0,
    "nvalues" : 0
}

फिर एक sensor_reading . के प्रत्येक इंसर्ट पर अगले दस मिनट के लिए दस्तावेज़, sensor_averages . को भी अपडेट करें डॉक्टर:

db.sensor_averages.update(
    { "start" : now_rounded_to_the_ten_minute_boundary },
    { "$inc" : { "svalues" : value, "nvalues" : 1 } }
)

फिर, जब आप औसत के बीच अंतर चाहते हैं, तो उपयुक्त दो दस्तावेज़ों को याद करें, svalues को विभाजित करें nvalues . द्वारा औसत प्राप्त करने और घटाने के लिए।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेवला:डीबी से पिछले 7 दिनों के डेटा आंकड़े कैसे अपलोड करें?

  2. कौन से MongoDB प्रकार mongoimport/mongoexport द्वारा संरक्षित नहीं हैं?

  3. मैं ट्विटर के स्ट्रीमिंग एपीआई से ट्वीट्स का उपभोग कैसे कर सकता हूं और उन्हें मोंगोडब में स्टोर कर सकता हूं

  4. MongoDB में एक सरणी में एक एम्बेडेड दस्तावेज़ में एक फ़ील्ड का नाम बदलना काम नहीं कर रहा है

  5. MongoClient v3.0 का उपयोग करते समय db.Collection एक फ़ंक्शन नहीं है