首页 > 解决方案 > 仅使用 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 应用程序中实现这一点。

试试上面的查询。

它会帮助你。

标签: javaspringmongodbjdbc

解决方案


一种解决方案是:

db.collection.find({
   $expr: {
      $and: [
         { $eq: [{ $year: "$Date" }, 2020] },
         { $eq: [{ $month: "$Date" }, 5] }
      ]
   }
})

推荐阅读