【发布时间】:2021-01-17 23:12:20
【问题描述】:
我有一个文档的创建日期属性,其格式如下:字符串类型的“05/03/2020”。
我必须从我的系统中提取创建日期早于“05/03/2020”的所有文档。
我试过了:
db.MyCollection.find ({DateC: {$lte: "05/03/2020"}})
但它仍然返回 0。
有没有办法比较日期格式字符串是否在另一个日期之前?
谢谢
【问题讨论】:
-
我建议您找出必须使用哪种格式来查询您的数据库。然后,将输入格式映射到 DB 格式。
05/03/2020不太可能准备好在查询中使用。要执行日期格式,您可以使用 moment.js,这是一个非常好的处理日期的库。 -
看看这个:stackoverflow.com/a/8835850/5860648 我认为这是如何根据日期查询的一个很好的例子。然后,如果您的输入格式不正确,请按您需要的方式进行格式化:)
-
是的,但我有超过 3000 个格式为“01/12/2020”的文档,所以我无法全部更新。
-
问题是我系统中的格式是字符串而不是日期,所以这个例子对我没有帮助
-
将日期存储为字符串不是一个好习惯,因为您将无法进一步使用日期比较运算符。如果我是你,我可能会首先计划迁移以首先修复数据库中的数据。否则,您将不得不在内存中获取整个数据库以以编程方式执行检查,这是您不想要的。计划迁移并修复您的数据库数据,以便以后正确使用它!
标签: javascript node.js mongoose mongodb-atlas