如何将变量传递给哈希字段上的 mongoid 查询
How can I pass a variable into a mongoid query on a hash field
Class 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)
有什么好的方法吗?请注意,这是必须 return 一个 Mongoid::Criteria
对象的更大查询链的一部分。
最终我们想到了这个:
query = { :"hours.#{day}.close_hour" => { '$lt' => 23 } }
Business.where(query)
来源:How to use a variable as a field name in mongodb-native findOne()?
谢谢!
编辑:我想指出用户 'mu is too short' 认识到它可以像这样轻松地编写:
:"hours.#{day}.close_hour".lt => 23
这更接近我们的初衷。
Class 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)
有什么好的方法吗?请注意,这是必须 return 一个 Mongoid::Criteria
对象的更大查询链的一部分。
最终我们想到了这个:
query = { :"hours.#{day}.close_hour" => { '$lt' => 23 } }
Business.where(query)
来源:How to use a variable as a field name in mongodb-native findOne()?
谢谢!
编辑:我想指出用户 'mu is too short' 认识到它可以像这样轻松地编写:
:"hours.#{day}.close_hour".lt => 23
这更接近我们的初衷。