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

एक इंटीजर फ़ील्ड पर रेल मोंगोइड रेगेक्स

लिंक किए गए प्रश्न से MongoDB समाधान होगा:

db.models.find({ $where: '/^124/.test(this.number)' })

वे चीज़ें जिन्हें आप find को सौंपते हैं Mongoid के लिए एक-से-एक काफ़ी मैप करें:

where(:$where => "/^#{numero.to_i}/.test(this.number)")

to_i कॉल को इस सीमित मामले के लिए स्ट्रिंग इंटरपोलेशन को ठीक करना चाहिए।

ध्यान रखें कि यह आपके डेटाबेस के लिए एक बहुत ही भयानक बात है:यह अनुक्रमणिका का उपयोग नहीं कर सकता है, यह संग्रह में प्रत्येक दस्तावेज़ को स्कैन करेगा, ...

आप स्ट्रिंग फ़ील्ड का उपयोग करने से बेहतर हो सकते हैं ताकि आप सामान्य रेगेक्स मिलान कर सकें। मुझे पूरा यकीन है कि यदि आप शुरुआत में भी अपने रेगेक्स को एंकर करते हैं तो मोंगोडीबी एक इंडेक्स का उपयोग करने में सक्षम होगा। यदि आपको वास्तव में डेटाबेस के अंदर एक संख्या होने की आवश्यकता है तो आप इसे हमेशा एक पूर्णांक और एक स्ट्रिंग फ़ील्ड दोनों के रूप में संग्रहीत कर सकते हैं:

field :number,   :type => Integer
field :number_s, :type => String

और फिर :number_s . रखने के लिए कुछ हुक रखें :number . के रूप में अप टू डेट परिवर्तन। यदि आपने ऐसा किया है, तो आपका पैटर्न मिलान क्षेत्र :number_s . को देखेगा . इस तरह के डेटा को प्रीकंप्यूटिंग और डुप्लिकेट करना MongoDB के साथ बहुत आम है, इसलिए आपको इसके बारे में बुरा नहीं मानना ​​​​चाहिए।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. सिम्फनी 2 फॉर्म पसंद और मोंगोडब

  2. Mongoose में Multer का उपयोग करके MongoDB में फ़ाइल संग्रहीत करना

  3. मोंगोडीबी में गतिशील एक्सएमएल

  4. NoSQL रुझान - MongoDB, Cassandra, CouchDB और Riak

  5. Mongodb सरणी में एम्बेडेड दस्तावेज़ वापस करने के लिए फ़ील्ड का चयन करें