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

mongodb $ जहां उप-दस्तावेज़ सामग्री लाने के लिए क्वेरी

$where का उपयोग करना ज्यादातर मामलों में ऑपरेटर से बचना चाहिए क्योंकि यह दोनों एक पूर्ण संग्रह स्कैन को लागू करने जा रहे हैं, भले ही अन्य स्थितियां इंडेक्स चयन का उपयोग कर सकती हैं।

इसके अलावा आप प्रत्येक परिणाम दस्तावेज़ पर जावास्क्रिप्ट दुभाषिया का आह्वान कर रहे हैं, जो मूल कोड की तुलना में काफी धीमा होने वाला है। मैनुअल पेज पर चेतावनियां पढ़ें, वे एक कारण से हैं

जहां संभव हो, कृपया .aggregate() इसके बजाय इस प्रकार की तुलना के लिए। आपके मामले में यह निश्चित रूप से बेहतर विकल्प है:

db.foo.aggregate([
    { "$match": { "flag": true } },
    { "$unwind": "$versions" },
    { "$project": {
        "versions": "$versions"
        "same": { "$eq": [ "$versions.version", "$defaultVersion" ] }
    }}
    { "$match": { "same": true } },
    { "$project": {
        "_id": 0,
        "versions": 1
    }}
])

यह आपको पहले "ध्वज" स्थिति द्वारा अपनी क्वेरी को फ़िल्टर करने की अनुमति देता है और फिर सरणी के प्रत्येक सदस्य का निरीक्षण करने के लिए तुलना करता है कि क्या दो फ़ील्ड समान हैं।

यदि आवश्यक हो तो आप मिलान किए गए सरणी तत्वों को उस सरणी में वापस रोल कर सकते हैं जहां एक से अधिक मिलान हों। लेकिन मुझे नहीं लगता कि यह आपकी आवश्यकता है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. क्या NoSQL डेटाबेस के लिए स्कीमा माइग्रेशन के लिए कोई उपकरण हैं?

  2. नेस्टेड सरणी नेवला नोडज में तत्व पुश करें

  3. $in $all की तुलना में बहुत तेज़ क्यों है?

  4. एक यूआरएल क्वेरी स्ट्रिंग से सीधे फीड की जाने वाली मोंगो क्वेरी कितनी खतरनाक है?

  5. मैं कोहाना में मोंगोडीबी का उपयोग कैसे कर सकता हूं?