2

我正在使用 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 中的日期格式与我传递的格式不同的原因。

如何将 Javascript 日期格式转换为 mongodb 格式?或者至少,我如何以存储在 MongoDB 中的格式获取当前日期?

PS我正在使用nodeJs并希望在这种情况下查询数据库。

4

2 回答 2

5

Mongo 将日期存储为ISODate对象。只需将我们的日期包装到ISODate构造函数中:

{
    "fooBarDate": {
        "$lte": ISODate("2013-05-26T05:00:00.000Z")
    }
}
于 2013-06-19T16:11:19.763 回答
1

如果您将字符串传递到查询中,正确的数据格式是 ISO8601,这看起来就像您已经完成的那样,但是您也可以将 javascript 日期对象直接传递到查询中并获得相同的结果。看起来您可能缺少正确的括号,这可能导致您的查询失败。尝试以这种方式重新格式化您的代码(编辑我使用的是猫鼬,但我认为直接 mongo 是一样的):

var currentTime = new Date;
orm.Records.find({lastUpdate:{$lte:currentTime}})
于 2013-06-19T16:05:10.857 回答