????????????? Mongoose ??
Posted
技术标签:
【中文标题】使用没有时间的日期字段进行 Mongoose 查询【英文标题】:Mongoose querying with a date field without time 【发布时间】:2021-10-08 23:20:01 【问题描述】:我在 mongodb 中有一条包含日期字段的记录
createdAt: 2021-08-03T19:52:00.000+00:00
我们从我们的 API 客户端收到例如 mm/dd/yyyy 格式的日期
date: "08/03/2021"
在 javascript new Date("08/03/2021")
中创建 Date 对象后,它会将 ISODate 更改为
`2021-08-02T20:00:00.000Z`.
因此文档不在要求的日期范围内。
示例查询
createdAt: '$lt': new Date('08/03/2021')
考虑到我可以在数据库级别进行更改,我有什么选择来克服这个问题。
非常感谢。
【问题讨论】:
您是将“createdAt”字段存储为日期还是字符串?除非您将其保存为日期,否则您将无法执行该查询 它被存储为日期@RubénVega 那么可能是因为当地时差。当您将 new Date() 转换为 UTC 时,您可以看到是前一天。也许您的查询正在另一个本地时间执行?您能否检查一下查询中转换为什么 UTC 时间? 【参考方案1】:我会推荐moment.js图书馆:
createdAt:
$gt: moment("08/03/2021", "MM/DD/YYYY").beginOf('day').toDate(),
$lt: moment("08/03/2021", "MM/DD/YYYY").endOf('day').toDate(),
【讨论】:
以上是关于????????????? Mongoose ??的主要内容,如果未能解决你的问题,请参考以下文章
mongoose入门以及 mongoose 实现数据 的增删改查
Mongoose 错误 - 具有相同型号名称的 Mongoose 型号
使用 mongoose.createConnection() 与 mongoose.connect() 时查询挂起