0
我在我的控制器一些代碼,用作在數據庫(蒙戈)的搜索:如何在Ruby中使用Regexp.new()來搜索數據庫中的整數值?
@job_results = Job.where({:merchant_id => admin,:$or => [
{:job_number => Regexp.new(/#{key.to_i}/x)},
{:type => Regexp.new(/^#{key}/i)},
{:status => Regexp.new(/^#{key}/i)}
]})
的job_number
被存儲爲在DB一個整數值,不幸的是不能改變:
key :job_number, Integer
當我直接在蒙戈運行查詢,它返回:
> db.jobs.find({ job_number: 2013058 })
{ "_id" : ObjectId("519555d789651a5443000346"), "job_number" : 2013058, "type" : "5191027089651a5adb000093", "priority" : "5191027b89651a5d38000001", "start_time" : "08:00", "end_time" : "10:00" }
但是,搜索不返回任何結果:
MONGODB (0.5ms) DATABASE['jobs'].find({:merchant_id=>"518b762e89651a0389000013", :$or=>[{:job_number=>/2013058/x}, {:type=>/^2013058/i}, {:status=>/^2013058/i}]})
job_results: Array[0]
如果我搜索一個作業類型(字符串,一個詞)它工作正常。我試圖將密鑰轉換爲一個整數,而Ruby並不抱怨這一點。我也試過key.to_s.to_i
。如何使用作業編號搜索時返回喬布斯?
在整數字段中使用regex可能不會像https://jira.mongodb.org/browse/SERVER-1174中所解釋的那樣真正起作用。根據這個問題,在非字符串字段上使用正則表達式「會非常緩慢,並且有點誤導。」 – MervS
merchant_id需要像這樣指定'BSON :: ObjectId.from_string(「518b762e89651a0389000013」)' –