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

मोंगोडब क्वेरी विशिष्ट माह|वर्ष तारीख नहीं

MongoDB 3.6 और नए के साथ, आप $expr . का उपयोग कर सकते हैं अपने find() . में ऑपरेटर सवाल। यह आपको क्वेरी एक्सप्रेशन बनाने की अनुमति देता है जो $match . में एक ही दस्तावेज़ के फ़ील्ड की तुलना करते हैं मंच।

db.customer.find({ "$expr": { "$eq": [{ "$month": "$bday" }, 9] } })

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

उपरोक्त में, $redact $cond . का उपयोग करता है टेनरी ऑपरेटर के रूप में सशर्त अभिव्यक्ति प्रदान करने के साधन के रूप में जो सिस्टम वैरिएबल बनाएगा जो रिडक्शन करता है। $cond . में तार्किक व्यंजक किसी दिए गए मान के साथ दिनांक ऑपरेटर फ़ील्ड की समानता की जांच करेगा, यदि वह मेल खाता है तो $redact $$KEEP . का उपयोग करके दस्तावेज़ लौटाएगा सिस्टम वैरिएबल और अन्यथा $$PRUNE . का उपयोग करके त्याग देता है

निम्नलिखित पाइपलाइन को चलाने से आपको वांछित परिणाम मिलना चाहिए:

db.customer.aggregate([
    { "$match": { "bday": { "$exists": true } } },
    {
        "$redact": {
            "$cond": [
                { "$eq": [{ "$month": "$bday" }, 9] },
                "$$KEEP",
                "$$PRUNE"
            ]
        }
    }
])

यह $project . के समान है +$match कॉम्बो लेकिन फिर आपको पाइपलाइन में जाने वाले बाकी सभी क्षेत्रों का चयन करना होगा:

db.customer.aggregate([
    { "$match": { "bday": { "$exists": true } } },
    {
        "$project": {
            "month": { "$month": "$bday" },
            "bday": 1,
            "field1": 1,
            "field2": 1,
            .....
        }
    },
    { "$match": { "month": 9 } }
])

एक अन्य विकल्प के साथ, धीमी क्वेरी के बावजूद, find() . का उपयोग करके $where . के साथ विधि के रूप में:

db.customer.find({ "$where": "this.bday.getMonth() === 8" })


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेवला स्कीमा में सरणी आकार के लिए सीमा कैसे निर्धारित करें?

  2. MongoDB $ दौर बनाम $ ट्रंक:क्या अंतर है?

  3. मेरे मोंगोडब की मरम्मत कैसे करें?

  4. पेरकोना लाइव फ्रैंकफर्ट 2018 - इवेंट रिकैप और हमारे सत्र

  5. फ़ील्ड नाम में डॉट का उपयोग कैसे करें?