MongoDB Tutorials

MongoDB में कुशल तिथि रूपांतरण

Spread the love

अपने MongoDB डेटाबेस में तिथियों का कुशलतापूर्वक प्रबंधन सटीक क्वेरी और सॉर्टिंग के लिए महत्वपूर्ण है। हालाँकि, डेटा अंतर्ग्रहण अक्सर इष्टतम Date प्रकार के बजाय स्ट्रिंग के रूप में संग्रहीत तिथियों का परिणाम देता है। यह लेख इन स्ट्रिंग निरूपणों को उचित MongoDB Date ऑब्जेक्ट में बदलने के कई तरीकों का विवरण देता है, जिससे आपके डेटाबेस के प्रदर्शन और डेटा अखंडता में सुधार होता है।

विषयसूची:

दिनांक और स्ट्रिंग डेटा प्रकार बनाना

स्ट्रिंग और दिनांक डेटा प्रकार दोनों के साथ दस्तावेज़ कैसे बनाएँ, यह समझना आवश्यक है। यह खंड समस्या को स्पष्ट करता है और रूपांतरण समाधानों के लिए मंच तैयार करता है।

MongoDB शेल का उपयोग करना:


// स्ट्रिंग दिनांक के साथ एक दस्तावेज़ सम्मिलित करना
db.myCollection.insertOne({
  _id: 1,
  dateString: "2024-10-27"
});

// एक उचित दिनांक ऑब्जेक्ट के साथ एक दस्तावेज़ सम्मिलित करना
db.myCollection.insertOne({
  _id: 2,
  dateObject: ISODate("2024-10-27T00:00:00Z")
});

यहाँ, dateString दिनांक को स्ट्रिंग के रूप में संग्रहीत करता है, जबकि dateObject सही ISODate प्रारूप का उपयोग करता है। हमारा लक्ष्य dateString को dateObject के तुलनीय प्रारूप में बदलना है।

MongoDB में स्ट्रिंग को तिथियों में बदलना

कई MongoDB ऑपरेटर इस रूपांतरण की सुविधा प्रदान करते हैं। इष्टतम विकल्प आपकी विशिष्ट आवश्यकताओं और आपके स्ट्रिंग तिथियों के प्रारूप पर निर्भर करता है।

$toDate ऑपरेटर का उपयोग करना

$toDate ऑपरेटर सबसे सरल और सबसे अनुशंसित दृष्टिकोण है। यह एक दिनांक स्ट्रिंग लेता है और एक Date ऑब्जेक्ट देता है। इनपुट स्ट्रिंग को एक पहचानने योग्य दिनांक प्रारूप (जैसे, ISO 8601) का पालन करना चाहिए।


db.myCollection.aggregate([
  {
    $project: {
      _id: 1,
      convertedDate: { $toDate: "$dateString" }
    }
  }
]);

यह एग्रीगेशन पाइपलाइन dateString को Date ऑब्जेक्ट में बदल देती है, इसे convertedDate में संग्रहीत करती है। यदि स्ट्रिंग अमान्य है, तो $toDate null देता है।

$convert ऑपरेटर का उपयोग करना

$convert ऑपरेटर अधिक लचीलापन प्रदान करता है, इनपुट और आउटपुट प्रकारों का स्पष्ट विनिर्देशन की अनुमति देता है। यह कम मानक दिनांक स्ट्रिंग प्रारूपों के लिए मूल्यवान है।


db.myCollection.aggregate([
  {
    $project: {
      _id: 1,
      convertedDate: {
        $convert: {
          input: "$dateString",
          to: "date",
          onError: null, 
          onNull: null    
        }
      }
    }
  }
]);

onError और onNull क्रमशः रूपांतरण त्रुटियों और शून्य मानों को संभालते हैं। उन्हें null पर सेट करने से विफलता पर null वापस आता है।

dateFromString ऑपरेटर का उपयोग करना (अप्रचलित)

जबकि पहले उपलब्ध था, dateFromString अप्रचलित है। बेहतर संगतता के लिए $toDate या $convert का उपयोग करें।

इन-प्लेस अपडेट के लिए $set ऑपरेटर का उपयोग करना

update विधि के साथ उपयोग किया जाने वाला $set ऑपरेटर, मौजूदा दस्तावेज़ों को सीधे संशोधित करता है।


db.myCollection.updateMany(
  {},
  { $set: { dateObject: { $toDate: "$dateString" } } }
);

यह सभी दस्तावेज़ों को अपडेट करता है, परिवर्तित तिथि के साथ एक dateObject फ़ील्ड जोड़ता है। मूल dateString रहता है। सावधानी बरतें, क्योंकि यह सीधे दस्तावेज़ों को बदल देता है।

टाइमस्टैम्प के लिए $clockTime का उपयोग करना

$clockTime प्रत्यक्ष स्ट्रिंग-टू-डेट रूपांतरण के लिए नहीं है, लेकिन विशिष्ट परिदृश्यों के लिए उपयोगी है। यह वर्तमान सर्वर समय को BSON टाइमस्टैम्प के रूप में प्रदान करता है। यह तब प्रासंगिक है जब मौजूदा स्ट्रिंग तिथियों को परिवर्तित करने के बजाय वर्तमान सर्वर समय के आधार पर टाइमस्टैम्प जोड़ा जा रहा हो।

हमेशा अपने डेटा को सत्यापित करें और स्ट्रिंग-टू-डेट रूपांतरण के दौरान संभावित त्रुटियों को संभालें। अपने डेटा और एप्लिकेशन की आवश्यकताओं के लिए सबसे उपयुक्त विधि चुनें। अधिकांश मामलों में, $toDate कुशल और स्वच्छ समाधान है।

प्रातिक्रिया दे

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *