【发布时间】:2013-09-22 05:13:20
【问题描述】:
我有一个模型(事件),有五年的记录(每天一条记录)。我需要一种方法,当传递诸如 2011-12-25 00:00:00 之类的日期对象时,将向我显示 12/25 发生的所有记录(查询 :created_at 列),无论年份如何或过去的时间。
我尝试了以下查询来检索给定日期之间的数据,但是在一年更改后我遇到了一个问题,我的查询无法检索记录。例如记录 sdate="1-06-2013" 和 edate ="2-2-2014" 我想要 1 月 1 日的记录,那么我怎样才能获得这些数据。
db.events.find("this.sdate.getMonth() > 6 && this.edate.getMonth()
我需要在 Mongoid 而不是 ActiveRecord 中使用精确的以下查询
Model.where("MONTH(created_at) = ? and DAY(created_at) = ?", somedate.month, somedate.day)
【问题讨论】:
-
您需要使用聚合框架来获得此结果,因为常规查询引擎不支持仅提取日期的月份和日期并对其进行操作。出于性能原因,不推荐使用
where。 -
本问答为您提供了一些细节:stackoverflow.com/questions/8136652/…
标签: ruby-on-rails mongodb mongoid