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

शून्य के साथ MongoDB तुलना ऑपरेटर

बारीक-किरकिरा विवरण

नवीनतम स्रोत से पढ़ना /ए> , null . से तुलना करते समय मूल रूप से 2 मामले होते हैं :

  1. अगर कैनोनिकल प्रकार
  2. ए> बीएसओएन तत्वों की तुलना की जा रही है, अलग हैं, केवल समानता तुलना (== , >= , <= ) अशक्त और अपरिभाषित true return लौटाएगा; अन्यथा null . के साथ कोई तुलना false लौटाएगा .
    नोट: किसी अन्य बीएसओएन प्रकार में वही विहित प्रकार नहीं है जो null . है ।
  3. अगर कैनोनिकल प्रकार
  4. ए> समान हैं (यानी, दोनों तत्व null हैं ), फिर compareElementValues कहा जाता है। null के लिए , यह केवल कैनोनिकल के बीच का अंतर लौटाता है टाइप करें दोनों बीएसओएन तत्वों की और फिर 0 . के खिलाफ अनुरोधित तुलना करता है .
    उदाहरण के लिए, null > null (5-5) > 0 --> False . में अनुवाद होगा क्योंकि विहित प्रकार की नल 5 है।
    इसी तरह, null < null (5-5) < 0 --> False . में अनुवाद होगा ।

इसका अर्थ है null केवल कभी भी null . के बराबर हो सकता है या undefined . कोई अन्य तुलना जिसमें null . शामिल है हमेशा false लौटाएगा ।

क्या यह बग है?

अपडेट किया गया उत्तर:

तुलना ऑपरेटरों के लिए दस्तावेज़ीकरण ($gt , $lt ) संदर्भ दस्तावेज़ीकरण जिसे आपने मूल रूप से लिंक किया था , जिसका अर्थ है कि तुलना ऑपरेटरों को चाहिए null . के साथ काम करें . इसके अलावा, क्वेरी सॉर्टिंग (अर्थात , db.find().sort() ) करता है प्रलेखित तुलना/क्रमबद्ध व्यवहार का सटीक रूप से पालन करें।

यह कम से कम असंगत है। मुझे लगता है कि MongoDB की JIRA साइट पर बग रिपोर्ट सबमिट करना उचित होगा ।

मूल उत्तर:

मुझे नहीं लगता कि यह व्यवहार कोई बग है।

जावास्क्रिप्ट के लिए आम सहमति क्या वह undefined है मतलब असाइन किया गया जबकि null मतलब असाइन किया गया लेकिन अन्यथा अपरिभाषित . अपरिभाषित के खिलाफ मूल्य तुलना, समानता के अलावा, कम से कम गणितीय अर्थ में कोई मतलब नहीं है।

यह देखते हुए कि बीएसओएन जावास्क्रिप्ट से बहुत अधिक आकर्षित करता है, यह मोंगोडीबी पर भी लागू होता है।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेस्टेड स्ट्रक्चर्स को एमजीओ के साथ स्टोर करना

  2. मोंगोडब के साथ डंप को पुनर्स्थापित करना विफल रहता है

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

  4. यदि सरणी में कोई मान है तो नेवला दस्तावेज़ ढूंढ़ता है

  5. नोड.जेएस विधि के लिए रैंडम () नेवला क्यों खोजें काम नहीं करता है?