java - 仅使用 Springboot 和 MongoDB 比较 YYYY-MM 部分日期
问题描述
我面临 mongoDb 日期字段的问题。我在 MongoDB 集合中有一列是日期类型。它以 ISO 格式存储整个日期。如下所示。
2020-05-13T14:00:00.000
现在从我的 api 我正在传递2020-05
手段YYYY-MM
,我想2020-05
在 db 中获取所有具有值的记录。
我尝试过如下多个选项。
Date mydate=new Date();
Criteria criterid = Criteria
.where("date").is(mydate)
我在数据库中有以下数据
|---------------------|------------------|------------------|
| Name | ID | Date |
|---------------------|------------------|------------------|
| A | 1 |2020-05-13T14:00:00|
|---------------------|------------------|------------------|
| B | 2 |2020-12-31T14:00:00|
|---------------------|------------------|------------------|
| C | 3 |2020-07-17T14:00:00|
|---------------------|------------------|------------------|
| D | 4 |2020-05-29T14:00:00|
|---------------------|------------------|------------------|
enter code here
如果我将通过“2020-05”那么它应该返回
|---------------------|------------------|--------------------|
| Name | ID | Date |
|---------------------|------------------|--------------------|
| A | 1 |2020-05-13T14:00:00 |
|---------------------|------------------|--------------------|
| D | 4 |2020-05-29T14:00:00 |
|---------------------|------------------|--------------------|
mongoDbSTR_TO_DATE()
中是否有类似 MySQL 和oracle 的东西TO_DATE()
`**.
我正在尝试在 Spring Boot 应用程序中实现这一点。
试试上面的查询。
它会帮助你。
解决方案
一种解决方案是:
db.collection.find({
$expr: {
$and: [
{ $eq: [{ $year: "$Date" }, 2020] },
{ $eq: [{ $month: "$Date" }, 5] }
]
}
})