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

मोंगो क्वेरी प्रश्न $gt,$lt

यह वास्तव में भ्रमित करने वाला विषय है। मैं 10gen पर काम करता हूं और मुझे इसके चारों ओर अपना सिर लपेटकर कुछ समय बिताना पड़ा;)

आइए देखें कि क्वेरी इंजन इस क्वेरी को कैसे संसाधित करता है।

यहाँ फिर से प्रश्न है:

> db.test.find({ b : { $gt :  4, $lt : 6}});

जब यह रिकॉर्ड तक पहुंच जाता है तो ऐसा लगता है कि इसे मेल नहीं खाना चाहिए...

{ "_id" : ObjectId("4d54cff54364000000004331"), "a" : 1, "b" : [ 2, 4, 6, 8 ] }

मिलान सरणी के प्रत्येक तत्व के विरुद्ध नहीं किया जाता है, बल्कि संपूर्ण रूप से सरणी के विरुद्ध किया जाता है।

तुलना तीन चरणों में की जाती है:

चरण 1 :सभी दस्तावेज़ खोजें जहाँ b का मान 4 से अधिक है

b:[2,4,6,8] मेल खाता है क्योंकि 6 और 8, 4 से बड़े हैं

चरण 2 :सभी दस्तावेज़ खोजें जहाँ b का मान 6 से कम है

b:[2,4,6,8] मेल खाता है क्योंकि 2 और 4 6 से कम हैं

चरण 3 :चरण 1 और 2 दोनों में मेल खाने वाले दस्तावेज़ों का समूह खोजें।

बी:[2,4,6,8] के साथ दस्तावेज़ दोनों चरण 1 और 2 से मेल खाता है इसलिए इसे एक मैच के रूप में वापस कर दिया जाता है। ध्यान दें कि इस चरण में परिणाम भी डी-डुप्लिकेट हैं, इसलिए एक ही दस्तावेज़ को दो बार वापस नहीं किया जाएगा।

यदि आप चाहते हैं कि आपकी क्वेरी पूरी तरह से सरणी के बजाय सरणी के अलग-अलग तत्वों पर लागू हो, तो आप $elemMatch ऑपरेटर का उपयोग कर सकते हैं। उदाहरण के लिए

> db.temp.find({b: {$elemMatch: {$gt: 4, $lt: 5}}})
> db.temp.find({b: {$elemMatch: {$gte: 4, $lt: 5}}})
  { "_id" : ObjectId("4d558b6f4f0b1e2141b66660"), "b" : [ 2, 3, 4, 5, 6 ] }


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB सरणी से विशेष तत्व प्राप्त करें

  2. मोंगोडीबी ढूंढें ()

  3. 2018 में MongoDB - समीक्षा में एक वर्ष

  4. एक मोंगोडब दस्तावेज़ में सभी सरणी तत्वों को एक निश्चित मूल्य में कैसे बदलें?

  5. MongoDB रूट उपयोगकर्ता