ExpressJS:基于今天日期 yyyy-mm-dd 的 ISO DATE Mongoose 查询
ExpressJS: Mongoose query on ISO DATE based on todays date yyyy-mm-dd
我有这样的约会
"createdAt": "ISODate('2021-07-07T06:41:46.000Z')"
我在下面写了猫鼬查询来获取今天的记录。但是下面的查询是空的。
let meeting = await Meeting.find({
createdAt : {$lt: new Date().toISOString(),$gte: new Date().toISOString()}
});
我尝试了以下另一种使用静态日期的方法,它奏效了。我想获取动态今天的数据。
let meeting = await Meeting.find({
createdAt : {
'$eq': new Date('2021-07-07T06:41:46.000Z')
}
});
谁能帮我解决这个问题
我假设“createdAt”字段的类型在 Mongoose 模式中是 Date
(如果不是这种情况,您应该转换为 Date)。
逻辑
当你想过滤特定日期的文档时,可以使用条件:
0:00 the day <= createdAt < 0:00 the following day
例如,要过滤 07/07/2021 的会议,条件将为:
0:00 07/07/2021 <= createdAt < 0:00 08/07/2021
编码
考虑到这个逻辑,代码就非常简单了:
let today = new Date();
today.setHours(0,0,0,0); // set to 0:00
let tomorrow = new Date(today)
tomorrow.setDate(tomorrow.getDate() + 1)
let meeting = await Meeting.find({
createdAt : {$gte: today, $lt: tomorrow}
});
当使用 date/time 值时,我推荐 moment.js 库。可能是这个:
let meeting = await Meeting.find({
createdAt : {
$gte: moment().startOf('day').toDate(),
$lte: moment().endOf('day').toDate()
}
});
我有这样的约会
"createdAt": "ISODate('2021-07-07T06:41:46.000Z')"
我在下面写了猫鼬查询来获取今天的记录。但是下面的查询是空的。
let meeting = await Meeting.find({
createdAt : {$lt: new Date().toISOString(),$gte: new Date().toISOString()}
});
我尝试了以下另一种使用静态日期的方法,它奏效了。我想获取动态今天的数据。
let meeting = await Meeting.find({
createdAt : {
'$eq': new Date('2021-07-07T06:41:46.000Z')
}
});
谁能帮我解决这个问题
我假设“createdAt”字段的类型在 Mongoose 模式中是 Date
(如果不是这种情况,您应该转换为 Date)。
逻辑
当你想过滤特定日期的文档时,可以使用条件:
0:00 the day <= createdAt < 0:00 the following day
例如,要过滤 07/07/2021 的会议,条件将为:
0:00 07/07/2021 <= createdAt < 0:00 08/07/2021
编码
考虑到这个逻辑,代码就非常简单了:
let today = new Date();
today.setHours(0,0,0,0); // set to 0:00
let tomorrow = new Date(today)
tomorrow.setDate(tomorrow.getDate() + 1)
let meeting = await Meeting.find({
createdAt : {$gte: today, $lt: tomorrow}
});
当使用 date/time 值时,我推荐 moment.js 库。可能是这个:
let meeting = await Meeting.find({
createdAt : {
$gte: moment().startOf('day').toDate(),
$lte: moment().endOf('day').toDate()
}
});