我正在尝试使用nodejs / mongoose从mongodb获取结果。
var dateStr = new Date(year,month,day,0,0,0);
var nextDate = new Date(year,month,day,23,59,59);
GPSData.find({"createdAt" : { $gte : new ISODate(dateStr), $lte: new ISODate(nextDate) }}, function(err, data) {
if(err)
console.log(err);
});
错误:ISODate is not defined
答案 0 :(得分:44)
请注意ISODate
是MongoDB的一部分,在您的情况下不可用。您应该使用Date
而MongoDB驱动程序(例如您当前使用的Mongoose ORM)将负责场景后面Date
和ISODate
之间的类型转换。
答案 1 :(得分:1)
您可以简单地按如下方式使用ISO字符串转换日期:
GPSData.find({"createdAt" : { $gte : new Date(year,month,day,0,0,0).toISOString(), $lte: new Date(year,month,day,23,59,59).toISOString() }}, function(err, data) {
if(err)
console.log(err);
});
答案 2 :(得分:0)
就我而言,我正在使用ISODates转换查询
let dateString = "2014-01-22T14:56:59.301Z";
$gte : ISODate(dateStr)
在node.js中是
$gte : new Date(dateStr)
答案 3 :(得分:0)
代替ISO使用“新日期”节点js会处理ISO本身,无需编写ISO,只需使用“新日期”即可
答案 4 :(得分:0)
使用Moment JS在JavaScript中将日期转换为MongoDB ISODate格式
MongoDB使用ISODate作为其主要日期类型。如果要将日期对象插入MongoDB集合中,则可以使用 Date() Shell方法。
您可以通过将ISO-8601日期字符串(其年份在0到9999之间的范围内)传递给 new Date()构造函数或ISODate()函数来指定特定日期。这些函数接受以下格式:
"<YYYY-mm-dd>"
)返回具有指定日期的ISODate。"<YYYY-mm-ddTHH:MM:ss>"
)在客户的本地时区中指定日期时间,并以UTC返回具有指定日期时间的ISODate。"<YYYY-mm-ddTHH:MM:ssZ>"
)以UTC指定日期时间,并以UTC返回具有指定日期时间的ISODate。如果您正在用JavaScript编写代码,并且想要传递JavaScript日期对象并将其与MongoDB客户端一起使用,则要做的第一件事就是将JavaScript日期转换为MongoDB日期格式(ISODate)。操作方法如下。
var today = moment(new Date()).format('YYYY-MM-DD[T00:00:00.000Z]');
console.log("Next day -- " + (reqDate.getDate() + 1))
var d = new Date();
d.setDate(reqDate.getDate() + 1);
var tomorrow = moment(d).format('YYYY-MM-DD[T00:00:00.000Z]');
您可以使用新的Date()Shell方法将今天和明天的对象传递给MongoDB查询。
MongoClient.connect(con, function (err, db) {
if (err) throw err
db.collection('orders').find({ "order_id": store_id, "orderDate": {
"$gte": new Date(today), "$lt": new Date(tomorrow)}
}).toArray(function (err, result) {
console.log(result);
if (err) throw err
res.send(result);
})
})
答案 5 :(得分:0)
if (req.params.sDate && req.params.eDate) {
query["createdAt"] = {
$gte: new Date("2020-01-25").toISOString(),
$lte: new Date("2020-09-25").toISOString()
};
}
console.log("query", query, req.params.limit, req.params.skip);
domain.Payment.find(query)
.limit(req.params.limit)
.skip(req.params.skip)
.sort({ createdAt: -1 })
.exec((err, list) => {
console.log("err", err);
if (err || !list) {
callback(err, null);
} else {