我的控制器中有一些代码用作数据库(mongo)中的搜索:
@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
数据库中存储为整数值,遗憾的是无法更改:
key :job_number, Integer
当我直接在 mongo 中运行查询时,它返回:
> 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
。使用职位编号进行搜索时,如何让职位返回?