【问题标题】:Dates in Ruby On Rails and MongoDBRuby On Rails 和 MongoDB 中的日期
【发布时间】:2014-07-31 07:25:25
【问题描述】:

有带时间戳的集合

"timestamp" : ISODate("2014-06-10T00:00:00Z"),

但是

coll.find(:timestamp=>"ISODate(\"2014-06-10T00:00:00Z\")

不返回结果。使用 _id 和其他参数效果很好。我尝试使用不同的日期格式,但它总是返回空数组。在控制台命令中

db.my_collection.find({timestamp: ISODate("2014-06-10T00:00:00Z")})

返回正确的结果。

如何使用此参数获取 ROR 中的数据?

P.S.对不起,我的英语不好。

【问题讨论】:

    标签: ruby-on-rails ruby mongodb date


    【解决方案1】:

    因为你必须使用Date类型来定义时间。

    coll.find(:timestamp=>Date.new(2014,06,10))
    

    【讨论】:

      【解决方案2】:

      当你这样做时,你正在向 MongoDB 查询字符串

      coll.find(:timestamp => "ISODate(\"2014-06-10T00:00:00Z\")
      

      请在查询中使用实际的 Time 对象

      require 'time'
      coll.find(:timestamp => Time.parse('2014-06-10T00:00:00Z'))
      

      【讨论】:

        【解决方案3】:

        您应该将方法 mongoize 与 MongoId 一起使用。 像这样:

        (Date.today-30.days).mongoize
        

        或者

        example_day.to_date.mongoize
        

        更多详情请看这里: Mongoid aggregation $match with Date objects not working?

        【讨论】:

          猜你喜欢
          • 2012-01-09
          • 2013-04-10
          • 1970-01-01
          • 2012-08-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多