使用Mongomapper按月过滤日期

时间:2013-12-31 18:58:29

标签: mongodb date filtering mongomapper

我希望使用mongomapper为sinatra按月过滤数据。

在mongo控制台我会这样做

'Filter By January
db.document.find({$where : 'return this.date.getMonth() == 0'})
'Filter By July
db.document.find({$where : 'return this.date.getMonth() == 6'})
'Filter By December
db.document.find({$where : 'return this.date.getMonth() == 11'})

那么,mongomaper ODM的等价物是什么?

1 个答案:

答案 0 :(得分:0)

我忘记了这篇文章。

我的解决方案:

# d is my date to filter 
start_time = DateTime.strptime("#{d.year}-#{d.month}-01T00:00:00+00:00", '%Y-%m-%dT%H:%M:%S%z').to_time.utc
end_time   = DateTime.strptime("#{d.year}-#{d.month}-#{d.day}T23:59:59+00:00", '%Y-%m-%dT%H:%M:%S%z').to_time.utc

Document.where(:date => {:$gt => start_time}).where(:date => {:$lte => end_time}).find_each do |doc|
    #Do something with objectexpense.amount
end

随意发布更好的解决方案。