如何将变量传递给哈希字段上的mongoid查询

时间:2018-04-26 19:01:03

标签: ruby-on-rails ruby mongodb mongoid

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对象的较大查询链的一部分。

1 个答案:

答案 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

这更接近我们原来的意图。