我正在使用API(因此我无法控制字段) - 其中一个字段属于Date
类型。
现在,我发现存储在记录中的日期类似于以下值:
{
...
"foobarDate": "2013-05-26T05:00:00.000Z",
...
}
现在我希望根据此日期检索一些记录 - 例如,我需要检索fooBarDate
早于今天日期的所有记录。
如果我使用Javascript的Date()
功能,那么我会按以下格式获取日期:
Wed Jun 19 2013 21:13:50 GMT+0530 (IST)
如果我尝试按如下方式设计我的查询......
{
"fooBarDate": {
"$lte": <the date calculated in javascript>
}
}
...我没有得到记录 - 我得到一个空数组 - 我怀疑是因为MongoDB中存储的Date格式与我传递的格式不同。
如何将Javascript日期格式转换为mongodb格式?或者至少,我如何以MongoDB中存储的格式获取当前日期?
P.S。我正在使用nodeJs,并希望在这种情况下查询数据库。
答案 0 :(得分:5)
Mongo将日期存储为ISODate
个对象。只需将我们的日期包装到ISODate
构造函数中:
{
"fooBarDate": {
"$lte": ISODate("2013-05-26T05:00:00.000Z")
}
}
答案 1 :(得分:1)
如果将字符串传递给查询,则正确的数据格式是ISO8601,它看起来就像您所做的那样,但是您也可以直接将javascript日期对象传递给查询并获得相同的结果。看起来您可能错过了可能导致查询失败的正确括号。尝试以这种方式重新格式化代码(编辑我使用mongoose,但我认为直接mongo是相同的):
var currentTime = new Date;
orm.Records.find({lastUpdate:{$lte:currentTime}})