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

विशेष कुंजी मान युग्म वाले दस्तावेज़ का चयन करें लेकिन अन्य कुंजी मान युग्म न होने पर

आपका क्वेरी प्रयास एक ही "कुंजी" का दो बार उपयोग करता है। आप ऑब्जेक्ट संरचना में ऐसा नहीं कर सकते क्योंकि आप अनिवार्य रूप से उसी कुंजी के मान को "ओवरवाइटिंग" कर रहे हैं। तो माना गया वास्तविक प्रश्न उस कुंजी के लिए केवल "दूसरी" शर्त है।

इसलिए यदि आप एक ही कुंजी के लिए कई शर्तें रखना चाहते हैं, तो का उपयोग करें। $and ऑपरेटर:

db.collection.aggregate([
    { "$match": {
        "$and": [
            { "genericParams.key": { "$exists": true, "$ne": "manual_funds_processed" } },
            { "genericParams.key": "third_sms_email_time" }
        ] 
    },
    // other stages
})

या चूंकि सभी MongoDB स्थितियां वास्तव में डिफ़ॉल्ट रूप से "और" तर्क हैं, आप $eq इस मामले में:

db.collection.aggregate([
    { "$match": {
        "genericParams.key": { 
            "$ne": "manual_refund_processed", 
            "$eq": "third_sms_email_time"
        }
    }},
    // other stages
])

यहां यह ध्यान देने योग्य है कि .aggregate() . के बारे में कुछ खास नहीं है यहाँ ही, क्योंकि यह केवल आधार "क्वेरी" भाग है जो दस्तावेज़ चयन का कार्य कर रहा है।

यह भी ध्यान दें, कि एक "सकारात्मक" स्थिति मौजूद है ( $eq ) $exists . का उपयोग करना वास्तव में आवश्यक नहीं है चूंकि आप पहले से ही परीक्षण कर रहे हैं कि कम से कम उस तत्व का मिलान होना चाहिए।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. उत्पादन में प्रतिकृति सेट के रूप में एक एकल MongoDB उदाहरण क्यों शुरू करने की अनुशंसा नहीं की जाती है?

  2. आंशिक अनुक्रमणिका की सीमाएँ क्या हैं?

  3. मैं नेवला में मूल्यों की एक सरणी के साथ वस्तुओं के एक सेट को कैसे क्वेरी करूं?

  4. वादा और नोडज MongoDB ड्राइवर

  5. क्या मुझे मोंगोडीबी (मोंगोडीबी + नोड जेएस कॉम्बो) में डालने से पहले उपयोगकर्ता इनपुट को स्वच्छ करने की आवश्यकता है