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

$प्रोजेक्शन बनाम $elemMatch

प्रक्षेपण उपयोग में अंतर कुछ हद तक सूक्ष्म है। आपके उदाहरण के उपयोग में, ये समान प्रश्न होने चाहिए (सूचकांक उपयोग के संदर्भ में) लेकिन $elemMatch उदाहरण अनावश्यक रूप से क्वेरी मानदंड दोहराता है। $ इस उदाहरण के लिए प्रोजेक्शन अधिक समझदार विकल्प होगा।

दस्तावेज़ीकरण में नोट किया गया एक आवश्यक अंतर सरणी है। क्षेत्र की सीमा $ . के लिए अनुमान:

नीचे प्रोजेक्शन ऑपरेटरों में अंतर पर कुछ और नोट्स ...

द ) प्रोजेक्शन ऑपरेटर :

  • क्वेरी दस्तावेज़ से मेल खाने वाले पहले तत्व को शामिल करने के लिए क्वेरी परिणामों में शामिल सरणी फ़ील्ड की सामग्री को सीमित करता है।

  • यह आवश्यक है कि मिलान करने वाली सरणी फ़ील्ड क्वेरी मानदंड में शामिल हो

  • केवल तभी उपयोग किया जा सकता है जब क्वेरी मानदंड में एक एकल सरणी फ़ील्ड दिखाई दे

  • प्रक्षेपण में केवल एक बार उपयोग किया जा सकता है

$elemMatch प्रोजेक्शन ऑपरेटर

  • एक सरणी फ़ील्ड की सामग्री को सीमित करता है जो क्वेरी परिणामों में शामिल होती है जिसमें केवल पहला सरणी तत्व होता है जो $elemMatch स्थिति से मेल खाता है

  • मिलान करने वाले सरणी को क्वेरी मानदंड में होने की आवश्यकता नहीं है

  • एम्बेड किए गए दस्तावेज़ों वाले सरणी तत्वों के लिए एकाधिक स्थितियों से मेल खाने के लिए उपयोग किया जा सकता है

$elemMatch क्वेरी ऑपरेटर

ध्यान दें कि एक $elemMatch . भी है क्वेरी ऑपरेटर जो समान मिलान करता है, लेकिन परिणाम प्रक्षेपण के बजाय क्वेरी में। इसे $ . के संयोजन में उपयोग करते हुए देखना असामान्य नहीं है प्रक्षेपण।

दस्तावेज़ों से उदाहरण उधार लेना जहां आप दोनों का उपयोग कर सकते हैं:

db.students.find(
    // use $elemMatch query operator to match multiple criteria in the grades array
    { grades: {
        $elemMatch: {
            mean:  { $gt: 70 },
            grade: { $gt: 90 }
        }
    }},

    // use $ projection to get the first matching item in the "grades" array
    { "grades.$": 1 }
)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेवले में अधिकतम मूल्य प्राप्त करें

  2. MongoDB में वाइल्डकार्ड इंडेक्स बनाएं

  3. यम स्थापित मोंगोडब 3.2 विफल रहता है

  4. मॉर्फिया में मैं एक ArrayList के अंदर एक एम्बेडेड ऑब्जेक्ट को कैसे अपडेट कर सकता हूं?

  5. sql क्वेरी का मोंगो भाषा में अनुवाद