दिलचस्प पोस्ट
कार्य निष्पादन के लिए विफल ': app: dexDebug' com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException एक स्थिर वेब पद्धति के अंदर पृष्ठ नियंत्रण कैसे पहुंचें? डेटाबेस में mysqldb के माध्यम से पांडा डेटाफ्रेम कैसे सम्मिलित करें? इकाई फ़्रेमवर्क 4 / POCO – कहां शुरू करें? मैं जेएस को आवेदन रूट के बारे में कैसे जान सकता हूं? फिक्स्ड हेडर के साथ सीएसएस-केवल स्क्रॉल टेबल ImageView में छवि दिखाने के लिए सूचीदृश्य क्लिक करें एमआईएम एन्कोडेड, उद्धृत-प्रिंट करने योग्य पाठ में "= C2 = A0" क्या है? क्या पायथन में पैकेज / मॉड्यूल प्रबंधन प्रणाली है? कैसे java.lang.NoClassDefFoundError को हल करने के लिए? आर में एक वेक्टर में लगातार / रोलिंग रकम मैं किसी पाठ फ़ाइल में एक उपप्रोसेस कॉल कैसे पाइप कर सकता हूं? MVVM के साथ कई चयन प्रबंधित करना कैसे सी + + स्रोत कोड में एक CMake चर पढ़ने के लिए xampp MySQL प्रारंभ नहीं होता है

MongoDb में 15 मिनट का समय अंतराल के परिणामस्वरूप ग्रुप का परिणाम

मेरे पास एक "स्थिति" संग्रह है, जो इस स्ट्रक्चर की तरह है –

{ _id: ObjectId("545a0b63b03dbcd1238b4567"), status: 1004, comment: "Rem dolor ipsam placeat omnis non. Aspernatur nobis qui nisi similique.", created_at: ISODate("2014-11-05T11:34:59.804Z") }, { _id: ObjectId("545a0b66b03dbcd1238b4568"), status: 1001, comment: "Sint et eos vero ipsa voluptatem harum. Hic unde voluptatibus et blanditiis quod modi.", created_at: ISODate("2014-11-05T11:35:02.814Z") } .... .... 

मुझे उस संग्रह से 15 मिनट की अंतराल के आधार पर परिणाम प्राप्त करना होगा।

वेब के समाधान से एकत्रित समाधान "MongoDb में 15 मिनट का समय अंतराल के परिणामस्वरूप ग्रुप का परिणाम"

ऐसा करने के कुछ तरीके हैं।

पहली तारीख एकत्रीकरण ऑपरेटर के साथ है , जो आपको दस्तावेज़ों में "तारीख" मूल्यों काटना करने की अनुमति देता है। प्राथमिक उद्देश्य के रूप में "समूह" के लिए विशेष रूप से:

 db.collection.aggregate([ { "$group": { "_id": { "year": { "$year": "$created_at" }, "dayOfYear": { "$dayOfYear": "$created_at" }, "interval": { "$subtract": [ { "$minute": "$created_at" }, { "$mod": [{ "$minute": "$created_at"}, 15] } ] } }}, "count": { "$sum": 1 } }} ]) 

दूसरा तरीका है जब किसी डेट ऑब्जेक्ट को दूसरी डेट ऑब्जेक्ट से घटाया जाता है, तो इसका परिणाम एक छोटी सी चाल का उपयोग करके होता है, फिर परिणाम दो ऑब्जेक्ट्स के बीच युग टाइमस्टैम्प मिलीसेकेंड का प्रतिनिधित्व करने वाला एक संख्यात्मक मान होता है। तो सिर्फ युग युग का उपयोग करते हुए आपको युग मिलीसेकेंड का प्रतिनिधित्व मिलता है फिर अंतराल के लिए तिथि गणित का उपयोग करें:

 db.collection.aggregate([ { "$group": { "_id": { "$subtract": [ { "$subtract": [ "$current_date", new Date("1970-01-01") ] }, { "$mod": [ { "$subtract": [ "$current_date", new Date("1970-01-01") ] }, 1000 * 60 * 15 ]} ] }, "count": { "$sum": 1 } }} ]) 

इसलिए यह समूह अंतरण के लिए आप किस प्रकार का आउटपुट स्वरूप चाहते हैं पर निर्भर करता है। दोनों मूल रूप से एक ही चीज़ का प्रतिनिधित्व करते हैं और आपके कोड में एक "तिथि" ऑब्जेक्ट के रूप में पुनः निर्माण करने के लिए पर्याप्त डेटा है।

_id बाद आप "ग्रुपिंग ऑपरेटर" हिस्से में जो कुछ भी चाहते हैं उसे आप रख सकते हैं। मैं सिर्फ अपने आप से किसी वास्तविक वक्तव्य के बदले बुनियादी "गिनती" उदाहरण का उपयोग कर रहा हूं, जैसा कि आप वास्तव में करना चाहते हैं

मुझे अन्य उत्तर यहां पसंद है, और ज्यादातर एकत्रीकरण तिथि ऑपरेटर के बजाय तिथि गणित के उपयोग के लिए है, जबकि मददगार भी थोड़ा अस्पष्ट हो सकता है।

केवल एक चीज जो मैं यहां जोड़ना चाहती हूं वह है कि आप इस दृष्टिकोण से एक ऑब्जेक्ट को एकत्रीकरण फ्रेमवर्क से भी वापस कर सकते हैं, क्योंकि परिणाम के रूप में "संख्यात्मक" टाइमस्टैम्प के विपरीत। यह एक ही सिद्धांत पर थोड़ा अतिरिक्त गणित है, जो $add का उपयोग कर रहा है:

 db.collection.aggregate([ { "$group": { "_id": { "$add": [ { "$subtract": [ { "$subtract": [ "$current_date", new Date(0) ] }, { "$mod": [ { "$subtract": [ "$current_date", new Date(0) ] }, 1000 * 60 * 15 ]} ] }, new Date(0) ] }, "count": { "$sum": 1 } }} ]) 

यहां जावास्क्रिप्ट में Date(0) उपचुनाव एक समान "युग" तिथि को छोटा रूप में दर्शाता है, क्योंकि युग से 0 मिलिसेकंड युग है लेकिन मुख्य मुद्दा यह है कि जब किसी अन्य बीएसओएन दिनांक ऑब्जेक्ट को "जोड़" एक संख्यात्मक पहचानकर्ता के साथ किया जाता है, तो वर्णित स्थिति के उलटा सच है और अंतिम परिणाम वास्तव में अब एक Date

सभी ड्राइवर इस दृष्टिकोण से मूल भाषा की भाषा को अपनी भाषा में वापस देंगे।

मंगो डीबी। वर्जन () <3.0 के लिए थोड़ा और सुंदर

 db.collection.aggregate([ {$match: {created_at:{$exists:1}}}, {$group: { _id: {$add:[ {$dayOfYear: "$created_at" }, {$multiply: [{$year: "$created_at"}, 1000]} ]}, count: {$sum: 1 } }}, {$sort:{_id:-1}} ]) 

एक अन्य उपयोगी तरीका:

 db.collection.aggregate([ {$group: { _id: { overallTime: { $dateToString: { format: "%Y-%m-%dT%H", date: "$created_at" } }, interval: { $trunc: { $divide: [{ $minute: "$created_at" }, 15 ]}} }, }}, ]) 

और मिनट , घंटा , दिन के अंतराल के लिए और अधिक आसान:

 var format = "%Y-%m-%dT%H:%M"; // 1 min var format = "%Y-%m-%dT%H"; // 1 hour var format = "%Y-%m-%d"; // 1 day db.collection.aggregate([ {$group: { _id: { $dateToString: { format: format, date: "$created_at" } }, }}, ])