【发布时间】:2020-02-27 09:21:41
【问题描述】:
我在 MongoDB 中有一些数据,我想查找特定日期的数据,但在 DB 中,它随时间以 ISODate() 格式存储,像这样,
{
"_id": ObjectId("5e578771cd0d3b7660deb7ca"),
"updatedAt": ISODate("2020-02-27T16:38:20.444+0000"),
"createdAt": ISODate("2020-02-27T16:38:20.444+0000")
}
但我想得到这个文档。仅使用字符串日期,例如, db.collection.find({ createdAt: "2020-02-27" });
我试图通过创建范围来做到这一点,
setFream1 = new Date(new Date("2020-02-27").setHours(0,0,0,0));
setFream2 = new Date(new Date("2020-02-27").setHours(23,59,59,999));
db.collection.find({ createdAt: { $gte: new Date(setFream1), $lte: new Date(setFream2) } });
我认为它会起作用,但是还有其他更好的方法吗? 谢谢!
【问题讨论】:
-
更好地定义。 “2020-02-27”将被解析为 UTC,因此
new Date("2020-02-27").setHours(0,0,0,0)很可能会根据主机时区设置生成 2020-02-26 或 2020-02-28 开始的时间值。new Date(2020, 1, 28)代码更少,结果可预测。
标签: javascript node.js mongodb date find