लिंक किए गए प्रश्न से 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 के साथ बहुत आम है, इसलिए आपको इसके बारे में बुरा नहीं मानना चाहिए।