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

दिनांक फ़ील्ड के समय के आधार पर MongoDB संग्रह से दस्तावेज़ निकालें

एक नियमित अभिव्यक्ति उस चीज़ पर काम नहीं करेगी जो एक स्ट्रिंग नहीं है। वास्तव में BSON दिनांक selecting चुनने का कोई आसान तरीका नहीं है नियमित क्वेरी अभिव्यक्ति में विशुद्ध रूप से यह समय का मूल्य है।

ऐसा करने के लिए आपको एक $where केवल समय . पर मिलान करने के लिए अतिरिक्त तर्क के साथ शर्त दिनांक मान का भाग।

वास्तव में प्रश्न में दिए गए डेटा के आधार पर:

db.getCollection('collection').remove({
  "Id": "1585534",
  "Type": NumberInt(42),
  "$where": function() {
    return this.InDate.getUTCHours() === 18
      && this.InDate.getUTCMinutes() === 30
  }
})

जो निश्चित रूप से प्रदान किए गए डेटा में केवल पहला दस्तावेज़ है, भले ही यह वास्तव में "Id" द्वारा पहचाना गया हो वैसे भी चूंकि वह मान दोनों के बीच अद्वितीय है।

.getUTCHours() और .getUTCMinutes() जावास्क्रिप्ट हैं Date ऑब्जेक्ट विधियाँ, जो इस प्रकार एक BSON दिनांक . है $where में इस्तेमाल होने पर व्यक्त किया जाता है अभिव्यक्ति।

सामान्य तौर पर, MongoDB 3.6 (लेखन के रूप में आगामी) की तुलना में अधिक कुशल रूप की अनुमति देता है। $कहां एकत्रीकरण भाव में:

db.getCollection('collection').aggregate([
  { "$match": {
    "Id": "1585534",
    "Type": NumberInt(42),
    "$expr": {
      "$and": [
        { "$eq": [{ "$hour": "$InDate" }, 18 ] },
        { "$eq": [{ "$minute": "$InDate" }, 30] } 
      ] 
    }   
  }}
])

हालांकि इस तरह के भाव सीधे जैसे तरीकों से इस्तेमाल नहीं किए जा सकते .निकालें () या .deleteMany() , लेकिन $where भाव कर सकते हैं।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडम्प बैकअप इंडेक्स क्यों नहीं करता है?

  2. डेटा स्रोत खोजने में विफल:com.mongodb.spark.sql.DefaultSource

  3. डेटाबेस त्रुटि MongoDB:गायब हो गया डेटाबेस

  4. MongoDB एकत्रीकरण के अंदर फ़ील्ड का प्रकार बदलें और क्या $lookup फ़ील्ड पर अनुक्रमणिका का उपयोग करता है या नहीं?

  5. प्रकार विकल्प के लिए कोई Json deserializer नहीं मिला [reactivemongo.bson.BSONObjectID]