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 按今天的日期查找创建的结果的主要内容,如果未能解决你的问题,请参考以下文章

按 ObjectId 日期聚合 MongoDB 结果

Ubuntu环境下安装mongodb

Yii2.如何在 MongoDB/ActiveQuery 中使用查找?

从 MySQL 到 Mongo 数据导出:如何保存创建日期?

MongoDB - 使用 C# 驱动程序按日期和时间搜索

如何按创建日期删除 MongoDB 中的数据? [复制]