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

अन्य तिथियों के साथ ओवरलैप होने पर MongoDB दिनांक सीमा का पता लगाता है

समय ओवरलैप को नीचे दिए गए चित्र में इन 4 मामलों के साथ चित्रित किया जा सकता है, जहां S/E नए दस्तावेज़ का प्रारंभ/समाप्ति दिनांक है और S'/E' किसी भी मौजूदा दस्तावेज़ की प्रारंभ/समाप्ति तिथि है:

  S'                  E' 
  |-------------------|

   S                E 
   |****************|

S'          E' 
|-----------|

      S'          E' 
      |-----------|

              S'          E' 
              |-----------|

4 मामलों में हमारे पास S'<E . है और E'>S . ओवरलैप किए गए समय के साथ सभी दस्तावेज़ों को खोजने की क्वेरी हो सकती है:

db.collection.find({"startdate": {"$lt": E}, "enddate": {"$gt": S}})

संपादित करें:

आपकी प्रारंभ तिथि और समाप्ति तिथि स्ट्रिंग प्रारूप में है, और शाब्दिक रूप से आदेशित नहीं है, इसलिए तुलना के लिए "$gt" और "$lt" का उपयोग नहीं किया जा सकता है। आपको उन्हें दिनांक प्रकार में बदलना चाहिए:

db.collection.find().forEach(
  function (e) {
    // convert date if it is a string
    if (typeof e.startdate === 'string') {
       e.startdate = new Date(e.startdate);
    }
    if (typeof e.enddate === 'string') {
       e.enddate = new Date(e.enddate);
    } 
    // save the updated document
    db.collection.save(e);
  }
)

अंतिम प्रश्न होगा:

db.collection.find({"startdate": {"$lt": new Date("E")}, "enddate": {"$gt": new Date("S")}})



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB NodeJS प्रोसेस आउट ऑफ मेमोरी

  2. Ubuntu पर MongoDB के साथ NodeJS कैसे स्थापित करें

  3. मापदंडों के साथ mongoexport + node.js + चाइल्ड प्रोसेस

  4. एक अद्भुत MongoDB GUI टूल को परिभाषित करने में सहायता करें

  5. स्केलेबल फ़ाइल संग्रहण