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

MongoDb स्ट्रिंग से महीने और साल के आधार पर समूह कैसे करें

आप दिनांक एकत्रीकरण ऑपरेटरों का उपयोग नहीं कर सकते किसी अन्य चीज़ पर जो एक Date है वस्तु ही। आपका सबसे अच्छा विकल्प इन "स्ट्रिंग्स" को उचित Date ऑब्जेक्ट्स ताकि आप इस और भविष्य के संचालन में सही ढंग से क्वेरी कर सकें।

उस ने कहा, यदि आपके "स्ट्रिंग्स" में हमेशा एक सामान्य संरचना होती है, तो ऐसा करने का एक तरीका है एकत्रीकरण ढांचा औजार। इसके लिए बहुत अधिक हेरफेर की आवश्यकता होती है जो समस्या से निपटने के लिए इसे "इष्टतम" दृष्टिकोण नहीं बनाता है। लेकिन "दोहरे अंकों" की एक सेट संरचना और एक सुसंगत सीमांकक के साथ यह संभव है $substr ऑपरेटर:

db.collection.aggregate([
   { "$group": {
       "_id": {
           "year": { "$substr": [ "$dateStr", 7, 4 ] },
           "month": { "$substr": [ "$dateStr", 4, 2 ] }
       },
       "count": { "$sum": 1 }
   }}
])

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

आप एग्रीगेशन पाइपलाइन में स्ट्रिंग्स को तारीखों में नहीं बदल सकते। आपको असली BSON Date के साथ काम करना चाहिए ऑब्जेक्ट्स, लेकिन आप इसे स्ट्रिंग्स के साथ कर सकते हैं यदि एक सुसंगत प्रारूप है जिसे आप "लेक्सिकल ऑर्डर" में प्रस्तुत कर सकते हैं।

मेरा अब भी सुझाव है कि आप इन्हें BSON Dates में बदल दें यथाशीघ्र। और सावधान रहें कि "ISODate" या UTC मान एक भिन्न स्ट्रिंग रूप के साथ बनाया गया है। यानी:

new Date("2020-01-07")

"yyyy-mm-dd" प्रारूप में होना। कम से कम जावास्क्रिप्ट आमंत्रण के लिए।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडब:समूह के बाद एकत्रीकरण में रिकॉर्ड गिनती का प्रयोग करें

  2. मोंगोडीबी:जेएसओएन से लंबे समय तक पढ़ने की कोशिश कर रहा है java.lang.Integer को java.lang.Long पर नहीं डाला जा सकता है

  3. स्प्रिंग बूट डेटा और MongoDB - फ़िल्टर उप-दस्तावेज़ सरणी क्वेरी

  4. $arrayElemAt . के साथ लौटाया गया एक तत्व प्रोजेक्ट करें

  5. NoSQL डेटाबेस की लड़ाई - MongoDB और CouchDB की तुलना करना