如何在mongodb中转换日期格式
我使用的是API(因此我无法控制字段)-其中一个字段的类型为如何在mongodb中转换日期格式,mongodb,date,Mongodb,Date,我使用的是API(因此我无法控制字段)-其中一个字段的类型为Date 现在,我发现记录中存储的日期类似于以下值: { ... "foobarDate": "2013-05-26T05:00:00.000Z", ... } 现在我希望根据这个日期检索一些记录-例如,我需要检索fooBarDate早于今天日期的所有记录 如果我使用Javascript的Date()功能,那么我将以以下格式获取日期: 2013年6月19日星期三21:13:50 GMT+0530(IST) 如果
Date
现在,我发现记录中存储的日期类似于以下值:
{
...
"foobarDate": "2013-05-26T05:00:00.000Z",
...
}
现在我希望根据这个日期检索一些记录-例如,我需要检索fooBarDate
早于今天日期的所有记录
如果我使用Javascript的Date()
功能,那么我将以以下格式获取日期:2013年6月19日星期三21:13:50 GMT+0530(IST)
如果我尝试按如下方式设计查询
{
"fooBarDate": {
"$lte": <the date calculated in javascript>
}
}
{
“fooBarDate”:{
“$lte”:
}
}
…我没有得到记录-我得到一个空数组-我怀疑这是因为MongoDB中存储的日期格式与我传递的日期格式不同
如何将Javascript日期格式转换为mongodb格式?或者至少,如何以MongoDB中存储的格式获取当前日期
另外,我正在使用nodeJs,希望在这种情况下查询数据库。如果您将字符串传递到查询中,正确的数据格式是ISO8601,看起来您已经这样做了,但是您也可以将javascript日期对象直接传递到查询中,并获得相同的结果。看起来您可能缺少正确的括号,这可能会导致查询失败。尝试以这种方式重新格式化代码(编辑我正在使用mongoose,但我认为straight mongo是一样的):
Mongo将日期存储为
ISODate
对象。只需将日期包装到ISODate
constructor中即可:
{
"fooBarDate": {
"$lte": ISODate("2013-05-26T05:00:00.000Z")
}
}
这有点误导,因为
ISODate
只是将字符串转换为本机Date
类型,但MongoDB将日期存储为64位整数BSON dates。如果我想将fooBarDate与格式Y-m-d进行比较,该怎么办
{
"fooBarDate": {
"$lte": ISODate("2013-05-26T05:00:00.000Z")
}
}