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

MongoDB में किसी अन्य दिनांक-सीमा को ओवरलैप करने वाली सभी दिनांक-सीमाएं कैसे खोजें?

मेरा मानना ​​है कि आप अतिव्यापी दिनांक सीमाओं वाले दस्तावेज़ ढूँढ़ने का प्रयास कर रहे हैं। दूसरे शब्दों में कोई भी दस्तावेज़ जिसका start या end तिथियां दी गई तिथि सीमा के बीच में आती हैं।

आप निश्चित रूप से इसे थोड़ा सा मिलान और तर्क के साथ हासिल कर सकते हैं।

मान लें कि मेरे संग्रह में दो दस्तावेज़ हैं

{ 
    "_id" : ObjectId("56f692730c96eddb0a2c287e"), 
    "start" : "2015-03-27T15:00:00.000Z", 
    "end" : "2015-03-27T17:00:00.000Z"
}
{ 
    "_id" : ObjectId("56f6928c0c96eddb0a2c287f"), 
    "start" : "2015-03-27T16:00:00.000Z", 
    "end" : "2015-03-27T27:00:00.000Z"
}

जब मैं कोड के निम्नलिखित भाग को निष्पादित करता हूं

var startDate = "2015-03-27T20:00:00.000Z";
var endDate = "2015-03-27T21:00:00.000Z";

var findOverlapingDates = function(startDate, endDate){
  return db.collection.find({
     $or: [
        {$and: [
          {start:{$gte: startDate}}, {start:{$lte: endDate}}
        ]},
        {start:{$lte: startDate}, end:{$gte: startDate}}
     ]
  });
};

printjson(findOverlapingDates(startDate, endDate).toArray());

मुझे मिलता है

[
    {
        "_id" : ObjectId("56f6928c0c96eddb0a2c287f"), 
        "start" : "2015-03-27T16:00:00.000Z", 
        "end" : "2015-03-27T27:00:00.000Z"
    }
]

जो दी गई तिथि सीमा के लिए अतिव्यापी दस्तावेज है। आशा है कि यह सब समझ में आता है। सर्वश्रेष्ठ प्रदर्शन के लिए, मैं आपको start . दोनों पर अनुक्रमणिका रखने की सलाह दूंगा और end फ़ील्ड।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. संग्रह को छोटा करें

  2. MongoDB हैशेड इंडेक्स का मामला

  3. एक ही दस्तावेज़ में दो सरणी फ़ील्ड की तुलना करें

  4. MongoDB - अपने कॉन्फ़िगरेशन में 'org.springframework.data.mongodb.repository.query.MongoEntityInformation' प्रकार के बीन को परिभाषित करने पर विचार करें

  5. MongoDB fsync () का उपयोग क्यों नहीं करता है?