MongoDB में, $toDate
एग्रीगेशन ऑपरेटर किसी मान को तारीख में बदलता है
$toDate
कोई मान्य अभिव्यक्ति लेता है। यदि व्यंजक को दिनांक में परिवर्तित नहीं किया जा सकता है, तो यह एक त्रुटि देता है। यदि व्यंजक null
है या अनुपलब्ध, यह null
लौटाता है ।
उदाहरण
मान लीजिए हमारे पास samples
. नामक संग्रह है निम्नलिखित दस्तावेज़ के साथ:
{ "_id" : ObjectId("60066f1cc8eb4369cf6ad9c9"), "double" : 1613372035500.75, "decimal" : NumberDecimal("1613372035500.75"), "long" : NumberLong("1613372035500"), "string" : "2021-02-15 06:53:55" }
हम इनमें से प्रत्येक मान को दिनांक के रूप में वापस करने के लिए निम्न क्वेरी का उपयोग कर सकते हैं।
db.samples.aggregate(
[
{
$project:
{
_id: 0,
"ObjectId": { $toDate: "$_id" },
"double": { $toDate: "$double" },
"decimal": { $toDate: "$decimal" },
"long": { $toDate: "$long" },
"string": { $toDate: "$string" }
}
}
]
).pretty()
परिणाम:
{ "ObjectId" : ISODate("2021-01-19T05:33:16Z"), "double" : ISODate("2021-02-15T06:53:55.500Z"), "decimal" : ISODate("2021-02-15T06:53:55.500Z"), "long" : ISODate("2021-02-15T06:53:55.500Z"), "string" : ISODate("2021-02-15T06:53:55Z") }
जैसा कि अपेक्षित था, सभी फ़ील्ड उनके संगत मानों को दिनांक मानों में परिवर्तित करके लौटा दिए जाते हैं।
आप देख सकते हैं कि ObjectId फ़ील्ड अन्य को कोई भिन्न दिनांक देता है। ऐसा इसलिए है क्योंकि _id
फ़ील्ड का मान उस दिनांक को दर्शाता है जब दस्तावेज़ बनाया गया था, जबकि अन्य तिथियां मेरे द्वारा बनाई गई मनमानी तिथियां थीं। नीचे दिए गए ObjectId के बारे में अधिक जानकारी।
इनपुट प्रकार
$toDate
ऑपरेटर निम्नलिखित इनपुट प्रकारों को स्वीकार करता है:
- डबल
- दशमलव
- लंबी
- स्ट्रिंग (एक मान्य दिनांक स्ट्रिंग होनी चाहिए)
- ऑब्जेक्ट आईडी
इनके बारे में नीचे और अधिक।
संख्यात्मक प्रकार
सांख्यिक प्रकारों (डबल, डेसीमल और लॉन्ग) का उपयोग करते समय, $toDate
एक तारीख देता है जो मान द्वारा दर्शाए गए मिलीसेकंड की संख्या से मेल खाती है। डबल और दशमलव के लिए, यह छोटा किया गया मान है। $toDate
ऑपरेटर संख्यात्मक मानों की व्याख्या इस प्रकार करता है:
- एक सकारात्मक मान 1 जनवरी, 1970 से मिलीसेकंड की संख्या से मेल खाता है।
- एक नकारात्मक मान 1 जनवरी, 1970 से पहले मिलीसेकंड की संख्या से मेल खाता है।
स्ट्रिंग प्रकार
स्ट्रिंग प्रकार का उपयोग करते समय, स्ट्रिंग एक मान्य दिनांक स्ट्रिंग होनी चाहिए। उदाहरण के लिए:
"2021-02-15"
"15 February 2021"
"2021-02-15 06:53:55"
"2021-02-15 06:53:55+1100"
आप अपूर्ण तिथियों या अमान्य मानों जैसे "Monday"
. का उपयोग नहीं कर सकते , "March"
, "2020"
, आदि.
ऑब्जेक्ट आईडी
ObjectId मान 12 बाइट हेक्साडेसिमल मान होते हैं जिनमें निम्न शामिल होते हैं:
- ऑब्जेक्ट आईडी के निर्माण का प्रतिनिधित्व करने वाला एक 4 बाइट टाइमस्टैम्प मान, यूनिक्स युग के बाद से सेकंड में मापा जाता है।
- 5 बाइट एक यादृच्छिक मान है
- एक 3 बाइट इंक्रीमेंटिंग काउंटर, एक यादृच्छिक मान के लिए आरंभ किया गया।
$toDate
ऑपरेटर टाइमस्टैम्प भाग को दिनांक के रूप में लौटाता है।