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

एकत्रीकरण पाइपलाइन और अनुक्रमणिका

आम तौर पर, केवल पाइपलाइन ऑपरेटर जिन्हें सामान्य क्वेरी ($match . में समतल किया जा सकता है) , $limit , $sort , और $skip ) संग्रह पर अनुक्रमणिका का उपयोग करने में सक्षम होगा। यह $geoNear . के कारणों में से एक है 2.4 में जोड़ा गया ऑपरेटर पाइपलाइन की शुरुआत में होना चाहिए।

एक बार जब आप $project . के साथ दस्तावेज़ों को बदल देते हैं , $group , या $unwind अनुक्रमणिका अब मान्य/प्रयोग योग्य नहीं है।

यदि आपके पास किसी सरणी फ़ील्ड पर एक अनुक्रमणिका है, तो आप अभी भी इसका उपयोग $unwind . से पहले कर सकते हैं पाइपलाइन में दस्तावेज़ों के चयन में तेजी लाने के लिए और फिर चयनित दस्तावेज़ों को दूसरे $match . के साथ और अधिक परिष्कृत करने के लिए ।

जैसे दस्तावेज़ों पर विचार करें:

{ tags: [ 'cat', 'bird', 'blue' ] }

tags . पर एक अनुक्रमणिका के साथ ।

यदि आप केवल b . से शुरू होने वाले टैग को समूहीकृत करना चाहते हैं तो आप एक एकत्रीकरण कर सकते हैं जैसे:

{ pipeline: [
      { $match : { tags : /^b/ } },
      { $unwind : '$tags' },
      { $match : { tags : /^b/ } },
      /* the rest */
  ] }

पहला $match क्या मोटे अनाज tags . पर अनुक्रमणिका का उपयोग करके मेल खाते हैं? .

$unwind . के बाद दूसरा मैच इंडेक्स का उपयोग करने में सक्षम नहीं होगा (उपरोक्त दस्तावेज़ अब 3 दस्तावेज़ है) लेकिन उन दस्तावेज़ों में से प्रत्येक का मूल्यांकन कर सकते हैं जो अतिरिक्त दस्तावेज़ बनाए जाते हैं (उदाहरण से {टैग:'कैट'} को हटाने के लिए)।

एचटीएच - रोब।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. एक चर के लिए क्वेरी खोजने में नेवला परिणाम लौटाएं

  2. मोंगोडब अपडेट कई

  3. MongoDB .NET upsert पर _id उत्पन्न नहीं कर रहा है

  4. मोंगोडब सरणी तत्वों की तुलना करता है

  5. क्या आपको मोंगोडीबी का उपयोग करते समय जेपीए की आवश्यकता है?