使用日期上的 lt & gt 比较器搜索 mongodb 数据


const queryMatch = {departureDate: {$gte: new Date(query.departureDateMin),$lte: new Date(query.departureDateMax)}};
const flightsByCriteria = await this.flightModel.find(queryMatch).exec();

上述请求返回一个空表。然而,我使用ISODate(dateString)而不是new Date(dateString)使用mongodbCompass获取数据

我不知道我的请求有什么问题?谢谢你的帮助。

您应该以ISO格式从客户端发送日期,这样服务器就不会将它们转换为服务器本地时间。

当您从客户端发送日期时,只需调用.toISOString()方法即可发送:

{
departureDateMin: new Date(departureDateMin).toISOString(),
departureDateMax: new Date(departureDateMax).toISOString(),
}

然后,您可以这样查询数据库:

const queryMatch = {
departureDate: {
$gte: query.departureDateMin,
$lte: query.departureDateMax,
}
};
model.find({
departureDate: {
$gte: new Date(query.departureDateMin),
$lte: new Date(query.departureDateMax),
},
});

最新更新