我在Nestjs Mongoose中遇到了一个关于日期查询的问题,我在我的项目中使用了Mongoose。我想根据日期字段查询一些文档
我的查询看起来像:this.model.find(startDate:{$gte:new Date().toUTCString()})因此它将转换为:2023-05-17T09:37:23.592Z
这样
在我的DB我有一个记录,它具有startEnd:2023-05-17T12:30:23.306+00:00
我希望得到文档,但它没有
但是如果我将上面的查询粘贴到MongoDB Compass。成功了
当我console.log在pre hook find
.它记录了2023-05-17T09:37:23.592Z
但是当我打开Mongo调试模式时。显示:collection.find({ startDate: { '$lte': new Date("Wed, 17 May 2023 09:51:24 GMT") } }, { projection: null })
我不知道为什么这里印着GMT?
我使用Windows,Mongodb Docker版本6.x
请帮帮我先谢了
1条答案
按热度按时间iqxoj9l91#
Hi @阮泰首先我看到了两个查询之间的区别,在第一个中你使用的是
$gte
,但在第二个中你使用的是$lte
。所以,请确保目前哪个是正确的。当你使用
.toUTCSTring()
方法时,它会将你的日期转换为字符串,在你的数据库中,startDate可能存储在对象的日期类型中。所以你可以通过使用简单的日期对象collection.find({ startDate: { '$lte': new Date()} })
来消除这个错误