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

MongoDB $ प्रकार के साथ एक सरणी से मेल खाता है?

वास्तव में $type . के लिए दस्तावेज़ीकरण में एक "गोचा" सूचीबद्ध है विशेष रूप से सरणियों के बारे में:

<ब्लॉककोट>

सरणियों पर लागू होने पर, $type निर्दिष्ट प्रकार के किसी भी आंतरिक तत्व से मेल खाता है। प्रक्षेपण के बिना इसका मतलब है कि यदि किसी तत्व का सही प्रकार है तो संपूर्ण सरणी मेल खाएगी। प्रक्षेपण के साथ, परिणामों में केवल अनुरोधित प्रकार के वे तत्व शामिल होंगे।

तो इसका मतलब है कि यह पता लगाने के बजाय कि "तत्व स्वयं" सरणी में है या नहीं, वास्तव में जो परीक्षण किया जा रहा है वह सरणी का "आंतरिक तत्व" है यह देखने के लिए कि यह किस प्रकार का है।

अब प्रलेखन स्वयं $where . के साथ इस JavaScript परीक्षण का सुझाव देता है :

.find({ "$where": "return Array.isArray(this.author)" })

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

ट्रिक "डॉट नोटेशन" में है, जहां आप 0 . मांगते हैं सरणी का अनुक्रमणिका तत्व $exists

.find({ "author.0": { "$exists": true } })

जो सिर्फ मूल मामला है कि यदि "0 वां" तत्व मौजूद है तो फ़ील्ड मौजूद है और डेटा इसलिए एक सरणी है।

एक बार जब आप उस तार्किक आधार को समझ लेते हैं तो यह बहुत ही सरल परीक्षा होती है। केवल एक चीज जिसका मिलान नहीं किया जा सकता है वह है "वास्तव में खाली" सरणी, इस स्थिति में यदि आवश्यक हो तो आप जावास्क्रिप्ट विकल्प पर वापस आ सकते हैं। लेकिन यह वास्तव में एक इंडेक्स का उपयोग कर सकता है, इसलिए बाद वाले फॉर्म का उपयोग करना पसंद किया जाएगा।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb फ़ील्ड मानों की तुलना करके खोजें

  2. सफल डेटा गवर्नेंस के छह महत्वपूर्ण घटक

  3. मोंगोरेस्टोर, उल्का उत्पादन सर्वर से स्थानीय . तक

  4. मैं मोंगोज़ के साथ ऑब्जेक्ट आईडी कैसे उत्पन्न कर सकता हूं?

  5. mongoDB जावा ड्राइवर लॉगिंग को अक्षम कैसे करें?