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

सरणी तत्वों के लिए एकाधिक मानदंड निर्दिष्ट करें

यह समझने के लिए कि दस्तावेज़ीकरण क्या कह रहा है, आपको सबसे पहले यह समझने की आवश्यकता है कि सरणी के साथ श्रेणी क्वेरी कैसे काम करती है।

मान लीजिए कि आपके संग्रह में निम्नलिखित दस्तावेज़ हैं:

{ "finished" : [ 27, 3 ] },
{ "finished" : 17 }

पहली क्वेरी:

db.users.find( { "finished": { "$elemMatch": { "$gt": 15, "$lt": 20 } } } )

केवल उस दस्तावेज़ को लौटाएगा जहाँ "समाप्त" एक सरणी है। ऐसा इसलिए है क्योंकि $elemMatch ऑपरेटर केवल उन दस्तावेज़ों से मेल खाता है जहाँ फ़ील्ड एक सरणी है और जहाँ एक ही तत्व सभी क्वेरी मानदंडों को पूरा करता है।

लेकिन दूसरी क्वेरी:

db.users.find( { "finished": { "$gt": 15, "$lt": 20 } } )

27 . के रूप में आप दोनों दस्तावेज़ों को वापस कर देंगे जो संभवत:वह नहीं है जो आप चाहते हैं 20 . से बड़ा है और 3 15 . से कम है . ऐसा इसलिए है क्योंकि 27 पहले मानदंड से मेल खाता है और 3 द्वितीय। यह व्यवहार वही है जो दस्तावेज़ीकरण में उल्लिखित है।

<ब्लॉकक्वॉट>

...एक तत्व 15 से अधिक शर्त को पूरा कर सकता है और दूसरा तत्व 20 से कम शर्त को पूरा कर सकता है, या एक तत्व दोनों को संतुष्ट कर सकता है:

निष्कर्ष:

सरणियों के विरुद्ध श्रेणी क्वेरीज़ सरणी में एक या एक से अधिक तत्वों से मेल खाएँगी जो सभी क्वेरी मानदंडों से मेल खाते हैं।

पाठ:

सरणियों के साथ श्रेणी क्वेरी का उपयोग न करें। आपको अप्रत्याशित परिणाम मिलेगा।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. स्व-होस्टेड MongoDB

  2. MongoDB बैकअप और MongoDump का उपयोग करके पुनर्स्थापित करें

  3. मैं लाइव MongoDB डेटा को कैसे ब्राउज़ या क्वेरी कर सकता हूं?

  4. मोंगोडीबी $dayOfMonth

  5. MongoDB के साथ यूनिट परीक्षण