【问题标题】:MongoDB Ruby aggregation with dates带有日期的 MongoDB Ruby 聚合
【发布时间】:2013-09-22 08:50:00
【问题描述】:

我在使用聚合的 MongoDB rub​​y​​ 驱动程序(通过 mongoid)时遇到问题。

我想使用比较运算符匹配日期。

match = { '$match' => { 'created_at' => { '$gte' => DateTime.parse('2012-08-01') } } }
group = { '$group' => { '_id' => 'foo' } }
MyModel.collection.aggregate([match, group])

我不知道在日期的第一行放什么。上面写的代码会给我一个undefined method __bson_dump__ for DateTime 异常。使用字符串似乎也不起作用。

欢迎提出任何建议。 MongoID 的内置方法为我提供了选择所需的内容,但没有提供分组所需的内容。

【问题讨论】:

    标签: ruby-on-rails ruby mongodb mongoid mongoid3


    【解决方案1】:

    想通了,使用Time 对象而不是DateTime

    match = { '$match' => { 'created_at' => { '$gte' => Time.parse('2012-08-01') } } }
    

    【讨论】:

    • 它不起作用,它将日期转换为字符串,无法与Mongo中的DateTime字段进行比较
    【解决方案2】:

    试试这个。

    h = { '$match' => { 'created_at' => { '$gte' => new Date("2012/08/01") } } }
    

    【讨论】:

    • 所以我给出的代码示例是 ruby​​,这看起来就像我们在 javascript 中的做法。
    猜你喜欢
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 2014-10-16
    • 2013-11-25
    相关资源
    最近更新 更多