我在MongoDB数据库中有一个集合,其中包含一些数据,并希望根据从日期到日期过滤和查找数据。
样本数据
{
"_id": "64958e4cd25792d403c05e83",
"dealId": "4981506000014538111",
"note": "short description 1123",
"dateTime": "09/24/2022 12:22 AM",
"nextId": null,
"__v": 0
},
{
"_id":"64958e4cd25792d403c05e86",
"dealId": "4981506000014538111",
"note": "big description",
"dateTime": "06/23/2023 05:51 PM",
"nextId": null
"__v": 0
}
我使用下面的命令来获取数据,包括从日期到日期,但它没有给予我任何结果。startTime和endTime都是EST格式。不知道我错过了什么。请指导
const query = {
$and: [
{
dealId: dealId
},
{
nextId: null
}
]
};
if (from && until) {
query.$and.push({
dateTime: {
$gte: "06/23/2023",
$lte: "09/24/2022"
}
})
}
const notes = await NotesModel.find(query);
2条答案
按热度按时间kgsdhlau1#
正如在注解中已经指出的,当以本地格式存储为字符串时,您不能比较日期值。MongoDB本身不支持12小时时间,我建议使用第三方Date库,例如。moment.js、Luxon或Day.js,并将字符串转换为正确的
Date
值。下面是一个使用Luxon
的例子:根据数据大小,此更新可能需要一些时间。
注意,
DateTime
是在当前时区解析的,您可能需要显式设置适用的时区。然后你可以运行你的查询:
但是,这个特定的查询永远不会返回任何内容,因为日期不能晚于2023-06-23,也不能早于2022-09-24。
falq053o2#
你不应该在字符串中使用日期。如果您想查询上周的情况: