Staff.where(:year => Date.strptime("2014","%Y")
无法查询
但我可以用:year.gte 获得结果,但我认为它可以是相等操作员
的查询 Staff.create(
year: Date.strptime(@year,"%Y"),
)
Staff.where(:year => Date.strptime("2014","%Y")
答案 0 :(得分:0)
当你说:
field :year, type: Time
在Mongoid模型中,您最终会在MongoDB中获得完整的时间戳(年,月,日,小时......)。当你说:
Date.strptime("2014","%Y")
在Ruby中,您实际上正在构建日期 2014-01-01
。当您使用该日期查询2014-01-01T00:00:00
字段时,该日期将转换为Time
时间戳,以便您真正这样做:
Staff.where(:year => DateTime.parse('2014-01-01T00:00:00'))
据推测,您的2014-01-01T00:00:00
字段中没有year
个时间戳,因此查询无法找到任何内容。
如果您切换到:year.gte
,那么您正在查找year
之后或之后的2014-01-01T00:00:00
个时间戳(即2014年,2015年......)。< / p>
我怀疑您的year
字段名称错误或输入错误。如果它真的只是一年那么它应该是:
field :year, type: Integer
您可以使用以下内容查询:
Staff.where(:year => 2014)
在2014年得到的东西。如果它真的应该是一个时间戳,那么你最好不要打电话给它something_at
(其中&#34;某些东西&#34;取决于你的时间和## 39;真正跟踪)并且您通常使用$gte
和$lte
等范围运算符进行查询。