类Business
有一个哈希字段hours
,如下所示:
{
monday:
{
open_hour: 9,
open_min: 0,
close_hour: 17,
close_min: 45
}
tuesday:
...
}
我想要的查询如下:
Business.where(:'hours.monday.close_hour'.lt => 23)
这本身就是功能性的。但是,我想将monday
作为变量day
传递,即。
Business.where(:'hours.[day].close_hour'.lt => 23)
这样做有好办法吗?请注意,这是必须返回Mongoid::Criteria
对象的较大查询链的一部分。
答案 0 :(得分:3)
最终我们想出了这个:
query = { :"hours.#{day}.close_hour" => { '$lt' => 23 } }
Business.where(query)
来源:How to use a variable as a field name in mongodb-native findOne()?
谢谢!
编辑:我想指出用户'mu太短'被认为可以像这样轻松地写出:
:"hours.#{day}.close_hour".lt => 23
这更接近我们原来的意图。