Mongodb 按今天的日期查找创建的结果
Posted
技术标签:
【中文标题】Mongodb 按今天的日期查找创建的结果【英文标题】:Mongodb find created results by date today 【发布时间】:2015-06-02 08:20:40 【问题描述】:我有这个查询来获得一个月的结果。但我想得到今天的结果。
var start = new Date(2010, 11, 1);
var end = new Date(2010, 11, 30);
db.posts.find(created_on: $gte: start, $lt: end);
最好的方法是什么?
【问题讨论】:
new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]);
developer.mozilla.org/en-US/docs/Web/javascript/Reference/…
【参考方案1】:
您的开始日期对象应以00:00:00.000
(毫秒精度)保存当前日期时间小时,并将今天日期的小时数设置为23:59:59.999
:
var start = new Date();
start.setHours(0,0,0,0);
var end = new Date();
end.setHours(23,59,59,999);
然后像往常一样在 MongoDB 查询运算符中传递修改后的日期对象:
db.posts.find(created_on: $gte: start, $lt: end);
如果你使用dayjs date utility库,这可以通过在dayjs当前日期对象上使用startOf()
和endOf()
方法来完成,传递字符串'day'
作为参数:
const start = dayjs().startOf('day'); // set to 12:00 am today
const end = dayjs().endOf('day'); // set to 23:59 pm today
【讨论】:
【参考方案2】:解决方案
要查找今天的日期结果或日期之间的数据,请使用以下命令:
NodeJS:
// Date format YYYY-MM-DD
// Suppose you want to look for 1 day data between 2021-12-27 00:00:00 and 2021-12-28 00:00:00
let start = new Date("2021-12-27");
let end = new Date("2021-12-28");
// "created_on" can be any field with a date
db.posts.find(created_on: $gte: start, $lt: end);
这也适用于 Mongo Shell:
db.posts.find(created_on: $gte: new ISODate("2021-12-27T00:00:00.000Z"), $lt: new ISODate("2021-12-28T00:00:00.000Z"))
另一种方式:
// 27th half day
db.posts.find(created_on: $gte: new Date("2021-12-27T00:00:00.000Z"), $lt: new Date("2021-12-27T12:00:00.000Z"))
参考
find
- Select / filter data
$gte
- Greater Than / Equal
$lt
- Lower Than
【讨论】:
以上是关于Mongodb 按今天的日期查找创建的结果的主要内容,如果未能解决你的问题,请参考以下文章
Yii2.如何在 MongoDB/ActiveQuery 中使用查找?