Sra*_*van 5 mongodb mongodb-query
我的数据库架构具有字符串日期格式(“date”:“2020-09-01 16:07:45”)。我需要在给定的日期范围之间进行搜索,我知道如果我们使用 ISO 日期格式这是可能的,但我不确定我们是否可以使用字符串形式的日期格式进行查询。
我尝试了以下查询,它似乎没有显示准确的结果。
db.daily_report_latest.find({"date":{$gte: "2021-01-01 00:00:00", $lte:"2021-03-01 00:00:00"}},{"date":1})
Run Code Online (Sandbox Code Playgroud)
有什么替代方案吗?感谢你的帮助。
因此,在这两种解决方案中,首先将date数据库中的字段类型转换为日期,然后将其与输入日期范围进行比较。
解决方案#1:对于 MongoDB 版本 >= 4.0,使用$toDate。
db.daily_report_latest.find(
{
$expr: {
$and: [
{ $gte: [{ $toDate: "$date" }, new Date("2021-01-01 00:00:00")] },
{ $lte: [{ $toDate: "$date" }, new Date("2021-03-01 00:00:00")] }
]
}
},
{ "date": 1 }
)
Run Code Online (Sandbox Code Playgroud)
解决方案#2:对于 MongoDb 版本 >= 3.6 使用$dateFromString。
db.daily_report_latest.find(
{
$expr: {
$and: [
{ $gte: [{ $dateFromString: { dateString: "$date" }}, new Date("2021-01-01 00:00:00")] },
{ $lte: [{ $dateFromString: { dateString: "$date" }}, new Date("2021-03-01 00:00:00")] }
]
}
},
{ "date": 1 }
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3797 次 |
| 最近记录: |