????????????? 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 型号

使用 mongoose.createConnection() 与 mongoose.connect() 时查询挂起

使用 mongoose.createConnection() 与 mongoose.connect() 时查询挂起

??node.js????Mongoose??????