如何在mongodb中转换日期格式

时间:2013-06-19 15:52:29

标签: mongodb date

我正在使用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,并希望在这种情况下查询数据库。

2 个答案:

答案 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}})