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

मोंगोडीबी $सप्ताह

MongoDB में, $week एकत्रीकरण पाइपलाइन ऑपरेटर वर्ष के सप्ताह को 0 . के बीच की संख्या के रूप में दिनांक के लिए लौटाता है और 53 .

$week . का उपयोग करते समय ऑपरेटर, आप वैकल्पिक रूप से परिणाम के लिए उपयोग करने के लिए एक समय क्षेत्र निर्दिष्ट कर सकते हैं।

$week ऑपरेटर या तो एक तिथि स्वीकार करता है (या तो एक तिथि, एक टाइमस्टैम्प, या एक ऑब्जेक्ट आईडी के रूप में), या एक दस्तावेज जो उपयोग करने के लिए दिनांक और समय क्षेत्र निर्दिष्ट करता है।

उदाहरण

मान लीजिए हमारे पास pets . नामक संग्रह है निम्नलिखित दस्तावेज़ के साथ:

{
	"_id" : ObjectId("600631c7c8eb4369cf6ad9c8"),
	"name" : "Fetch",
	"born" : ISODate("2020-12-31T23:30:15.123Z")
}

हम born . से वर्ष के सप्ताह को वापस करने के लिए निम्नलिखित कोड चला सकते हैं उस दस्तावेज़ में फ़ील्ड।

db.pets.aggregate(
  [
    {
      $project:
        {
          _id: 0,
          birthWeek: { $week: "$born" }
        }
    }
  ]
)

परिणाम:

{ "birthWeek" : 52 } 

हम देख सकते हैं कि सप्ताह 52 है।

यहाँ, मैंने birthWeek . का उपयोग किया है वापस जाने के लिए फ़ील्ड नाम के रूप में, लेकिन यह कुछ भी हो सकता था (जैसे weekBorn , week , आदि)।

_id MongoDB में अनुमानों का उपयोग करते समय फ़ील्ड डिफ़ॉल्ट रूप से लौटा दी जाती है, लेकिन इस उदाहरण में मैंने स्पष्ट रूप से _id छुपाया है _id: 0 . का उपयोग करके फ़ील्ड ।

समयक्षेत्र निर्दिष्ट करें

आप $week . के आउटपुट के लिए उपयोग करने के लिए एक समय क्षेत्र निर्दिष्ट कर सकते हैं ऑपरेटर।

जब आप ऐसा करते हैं, तो तर्क $week . पर चला जाता है निम्नलिखित रूप का होना चाहिए:

{ date: <dateExpression>, timezone: <tzExpression> }

जहां <dateExpression> उपयोग करने की तिथि है, और <tzExpression> उपयोग करने के लिए समय क्षेत्र है।

ओल्सन टाइमज़ोन पहचानकर्ता (उदा. "Europe/London" का उपयोग करके समयक्षेत्र निर्दिष्ट किया जा सकता है , "GMT" ) या UTC ऑफ़सेट (उदा. "+02:30" , "-1030" )।

ओल्सन टाइमज़ोन आइडेंटिफ़ायर

यहां एक उदाहरण दिया गया है जो सप्ताह को दो अलग-अलग समय क्षेत्रों में आउटपुट करता है, प्रत्येक ओल्सन टाइमज़ोन आईडी का उपयोग करता है:

db.pets.aggregate(
  [
    {
      $project: {
          _id: 0,
          honolulu: { 
            $week: { date: "$born", timezone: "Pacific/Honolulu" }
            },
          auckland: { 
            $week: { date: "$born", timezone: "Pacific/Auckland" }
            }
        }
    }
  ]
)

परिणाम:

{ "honolulu" : 52, "auckland" : 0 } 

इस मामले में, Pacific/Auckland का उपयोग करते समय दिनांक अगले वर्ष/सप्ताह में आगे बढ़ जाता है समयक्षेत्र।

UTC ऑफ़सेट

यहाँ वही उदाहरण है, इस समय को छोड़कर हम UTC ऑफ़सेट का उपयोग करते हैं।

db.pets.aggregate(
  [
    {
      $project: {
          _id: 0,
          "utcOffset-1000": { 
            $week: { date: "$born", timezone: "-1000" }
            },
          "utcOffset+1200": { 
            $week: { date: "$born", timezone: "+1200" }
            }
        }
    }
  ]
)

परिणाम:

{ "utcOffset-1000" : 52, "utcOffset+1200" : 0 } 

ऑब्जेक्ट आईडी से सप्ताह लौटाएं

आप $week . का उपयोग कर सकते हैं ऑब्जेक्ट आईडी से सप्ताह के हिस्से को वापस करने के लिए।

ObjectId मान 12 बाइट हेक्साडेसिमल मान होते हैं जिनमें निम्न शामिल होते हैं:

  • ऑब्जेक्ट आईडी के निर्माण का प्रतिनिधित्व करने वाला एक 4 बाइट टाइमस्टैम्प मान, यूनिक्स युग के बाद से सेकंड में मापा जाता है।
  • 5 बाइट एक यादृच्छिक मान है
  • एक 3 बाइट इंक्रीमेंटिंग काउंटर, एक यादृच्छिक मान के लिए आरंभ किया गया।

संक्षेप में, हमारा दस्तावेज़ इस तरह दिखता है:

{
	"_id" : ObjectId("600631c7c8eb4369cf6ad9c8"),
	"name" : "Fetch",
	"born" : ISODate("2020-12-31T23:30:15.123Z")
}

इस दस्तावेज़ में एक ObjectId है। इसलिए हम $week . का उपयोग कर सकते हैं उस सप्ताह को वापस करने के लिए जब हमारा दस्तावेज़ बनाया गया था (या अधिक विशेष रूप से, जब _id फ़ील्ड का ObjectId मान बनाया गया था)।

उदाहरण:

db.pets.aggregate(
  [
    {
      $project:
        {
          "timeStamp": { $toDate: "$_id"},
          "week": { $week: "$_id" }
        }
    }
  ]
).pretty()

परिणाम:

{
	"_id" : ObjectId("600631c7c8eb4369cf6ad9c8"),
	"timeStamp" : ISODate("2021-01-19T01:11:35Z"),
	"week" : 3
}

हम देख सकते हैं कि दस्तावेज़ वर्ष के तीसरे सप्ताह में बनाया गया था।

इस मामले में, मैंने $toDate . का भी इस्तेमाल किया ऑब्जेक्ट आईडी के टाइमस्टैम्प भाग को वापस करने के लिए एकत्रीकरण पाइपलाइन ऑपरेटर।

आईएसओ सप्ताह

आप $isoWeek . का भी उपयोग कर सकते हैं ऑपरेटर को 1 . से लेकर ISO 8601 प्रारूप में सप्ताह संख्या वापस करने के लिए करने के लिए 53


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB 3.x . पर डिफ़ॉल्ट के रूप में MongoDB-CR प्रमाणीकरण को कॉन्फ़िगर करना

  2. BadValue अमान्य है या कोई उपयोगकर्ता स्थान सेट नहीं है। कृपया सुनिश्चित करें कि LANG और/या LC_* पर्यावरण चर सही ढंग से सेट हैं

  3. मोंगोडीबी $exp

  4. मोंगोडब 3.x ड्राइवर एंड्रॉइड संगतता

  5. उल्का के पास कौन से सुरक्षा तंत्र हैं?