如何将变量传递给哈希字段上的 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

这更接近我们的初衷。