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

MongoDB में समय डेटा को सामान्य/कम कैसे करें?

यहां बताया गया है कि आप इसे एकत्रीकरण ढांचे में कैसे कर सकते हैं। मैं एक छोटे से सरलीकरण का उपयोग कर रहा हूं - मैं केवल वर्ष, माह और तिथि पर समूह बना रहा हूं - आपके मामले में आपको बेहतर दानेदार गणना के लिए घंटे और मिनट जोड़ने की आवश्यकता होगी। आपके पास यह विकल्प भी है कि यदि आपको प्राप्त होने वाले डेटा नमूने में बिंदु वितरण एक समान नहीं है तो भारित औसत करना है या नहीं।

project={"$project" : {
        "year" : {
            "$year" : "$DateTime"
        },
        "month" : {
            "$month" : "$DateTime"
        },
        "day" : {
            "$dayOfWeek" : "$DateTime"
        },
        "array_serial" : 1,
        "Port Name" : 1,
        "metric" : 1
    }
};
group={"$group" : {
        "_id" : {
            "a" : "$array_serial",
            "P" : "$Port Name",
            "y" : "$year",
            "m" : "$month",
                    "d" : "$day"
        },
        "avgMetric" : {
            "$avg" : "$metric"
        }
    }
};

db.metrics.aggregate([project, group]).result

मैंने इसे कुछ यादृच्छिक नमूना डेटा के साथ चलाया और इस प्रारूप का कुछ प्राप्त किया:

[
    {
        "_id" : {
            "a" : "12345",
            "P" : "CL1-B",
            "y" : 2012,
            "m" : 9,
            "d" : 6
        },
        "avgMetric" : 100.8
    },
    {
        "_id" : {
            "a" : "12345",
            "P" : "CL1-B",
            "y" : 2012,
            "m" : 9,
            "d" : 7
        },
        "avgMetric" : 98
    },
    {
        "_id" : {
            "a" : "12345",
            "P" : "CL1-A",
            "y" : 2012,
            "m" : 9,
            "d" : 6
        },
        "avgMetric" : 105
    }
]

जैसा कि आप देख सकते हैं यह एक परिणाम प्रति array_serial, पोर्ट नाम, वर्ष/माह/तारीख संयोजन है। आप उन्हें उस क्रम में लाने के लिए $sort का उपयोग कर सकते हैं जिस क्रम में आप उन्हें वहां से संसाधित करना चाहते हैं।

यहां बताया गया है कि आप हर पांच मिनट में मिनट को राउंडिंग करते हुए औसत से घंटे और मिनट को शामिल करने के लिए प्रोजेक्ट चरण का विस्तार कैसे करेंगे:

{
    "$project" : {
        "year" : {
            "$year" : "$DateTime"
        },
        "month" : {
            "$month" : "$DateTime"
        },
        "day" : {
            "$dayOfWeek" : "$DateTime"
        },
        "hour" : {
            "$hour" : "$DateTime"
        },
        "fmin" : {
            "$subtract" : [
                {
                    "$minute" : "$DateTime"
                },
                {
                    "$mod" : [
                        {
                            "$minute" : "$DateTime"
                        },
                        5
                    ]
                }
            ]
        },
        "array_serial" : 1,
        "Port Name" : 1,
        "metric" : 1
    }
}

आशा है कि आप इसे अपने विशिष्ट डेटा और आवश्यकताओं तक विस्तारित करने में सक्षम होंगे।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेवला क्वेरी नेस्टेड दस्तावेज़ों को एक निश्चित तिथि से अधिक या कम किया

  2. MongoDB में परिकलित समूह-दर फ़ील्ड

  3. स्प्रिंग डेटा मोंगो समय वाले क्षेत्र को वापस क्यों नहीं कर रहा है?

  4. नेवले के साथ स्कीमा में फ़ील्ड जोड़ें नहीं

  5. MongoDB द्वारा समर्थित डेटाबेस की अधिकतम संख्या