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

mongodb:दो दिनांक फ़ील्ड के बीच की समयावधि के लिए क्वेरी

सबसे अच्छा विकल्प $redact . का उपयोग करना है एकत्रीकरण पाइपलाइन चरण:

db.collection.aggregate([
    { "$redact": {
        "$cond": {
            "if": {
                "$gt": [
                    { "$subtract": [ "$lastUpdate", "$createdDate" ] },
                    1000 * 60 * 60 * 24
                ]
            },
            "then": "$$KEEP",
            "else": "$$PRUNE"
        }
    }}
])

तो आप मिलीसेकंड मान को एक दिन के लिए मिलीसेकंड मान से अधिक अंतर से देख रहे हैं। $subtract अंतर के लिए गणित करता है, और जब दो तिथियों को घटाया जाता है तो मिलीसेकंड में अंतर वापस आ जाता है।

$redact ऑपरेटर तार्किक अभिव्यक्ति को "if" के रूप में लेता है, और जहां वह स्थिति true . है यह "फिर" में कार्रवाई करता है जो कि $$KEEP . है दस्तावेज़। जहां यह false है फिर दस्तावेज़ को $$PRUNE . के साथ परिणामों से हटा दिया जाता है ।

ध्यान दें कि चूंकि यह एक तार्किक स्थिति है और सेट मान या मानों की श्रेणी नहीं है, इसलिए "इंडेक्स" का उपयोग नहीं किया जाता है।

चूंकि एकत्रीकरण पाइपलाइन में संचालन मूल रूप से कोडित हैं, यह इस तरह के एक बयान का सबसे तेज़ निष्पादन है जिसे आप प्राप्त कर सकते हैं।

$where . के साथ जावास्क्रिप्ट मूल्यांकन वैकल्पिक है . यह एक जावास्क्रिप्ट फ़ंक्शन अभिव्यक्ति लेता है जिसे इसी तरह एक true return वापस करने की आवश्यकता होती है या false मूल्य। शेल में आप इस तरह शॉर्टहैंड कर सकते हैं:

db.collection.find(function() {
    return ( this.lastUpdate.valueOf() - this.createdDate.valueOf() )
       > ( 1000 * 60 * 60 * 24 );
})

वही बात, सिवाय इसके कि जावास्क्रिप्ट मूल्यांकन के लिए व्याख्या की आवश्यकता होती है और यह .aggregate() की तुलना में बहुत धीमी गति से चलेगा। समकक्ष। उसी टोकन से, इस प्रकार की अभिव्यक्ति प्रदर्शन को अनुकूलित करने के लिए किसी अनुक्रमणिका का उपयोग नहीं कर सकती है।

सर्वश्रेष्ठ . के लिए परिणाम, दस्तावेज़ में अंतर संग्रहीत करें। तब आप सीधे उस संपत्ति पर सीधे पूछताछ कर सकते हैं, और निश्चित रूप से आप इसे अनुक्रमित भी कर सकते हैं।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. क्या मैं मोंगोडीबी में दायर नाम के रूप में चर का उपयोग करते समय एम्बेडेड दस्तावेज़ पर '$ सेट' का उपयोग कर सकता हूं?

  2. एक नए संग्रह के लिए मोंगोडब एकत्रीकरण ढांचे का निर्यात करें

  3. मोंगोडीबी सुरक्षा - नोएसक्यूएल डीबी सुरक्षित रखने के लिए संसाधन

  4. जावा में बीएसओएन से जेएसओएन दस्तावेज़ रूपांतरण

  5. गंभीर त्रुटि:कक्षा 'मोंगोडीबी \ ड्राइवर \ प्रबंधक' नहीं मिला