【发布时间】:2021-01-25 11:17:56
【问题描述】:
我将对象存储在数据库中,例如:
[
{
"created_at" : ISODate("2020-03-19T07:27:32.158Z"),
},
{
"created_at" : ISODate("2020-03-19T12:10:19.191Z"),
}
]
我想查找 created_at (开头)的数据,例如自动完成:25...、25/01... , 25/01/202...
我有一个输入日期,我可以获取以下格式的数据:25/01/2021:dd/mm/yyyy。
结果可以是 25 或 25/0 ,
在这种情况下,我需要找到 created_at : start with 25/0 的数据
类似于方法:$regex: "^" + date 但有日期
【问题讨论】:
-
将日期转换为字符串并使用正则表达式
-
但是如何比较字符串和数据库中的日期:
ISODate("2020-03-19T12:10:19.191Z") -
“将日期转换为字符串”表示将日期(bson 类型 9)转换为字符串(bson 类型 2),例如
ISODate("2020-03-19T12:10:19.191Z")转换为"19/03/2020"。然后,您可以根据需要对这些字符串进行所有过滤和比较。 -
为了清楚起见,您可以在应用程序级别(猫鼬模式)将日期转换为字符串,并将其作为额外字段添加到您的文档中。在这种情况下,您需要一次性更新所有现有文档。或者,您可以使用docs.mongodb.com/manual/reference/operator/aggregation/… 将其转换为运行时。它不需要对模型进行任何更改,但对每个请求的计算都相当昂贵。您可以根据数据访问模式选择哪种方法。
-
任何人都可以提供一个以 $dateToString 为例的聚合作为答案
标签: javascript node.js mongodb date mongoose