仅使用Springboot和MongoDB比较YYYY-MM部分日期。

问题描述 投票:-1回答:1

我面临着mongoDb日期字段的问题,我在MongoDB集合中有一列是日期类型,它以ISO格式存储整个日期。它以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 |
|---------------------|------------------|--------------------|

在mongoDb中是否有类似 STR_TO_DATE() 在MySQL和 TO_DATE() 在oracle`**中。

我正试图在Spring Boot应用程序中实现这个功能。

试试上面的查询。

它将帮助你。

java spring mongodb jdbc
1个回答
1
投票

一个解决方案是这个。

db.collection.find({
   $expr: {
      $and: [
         { $eq: [{ $year: "$Date" }, 2020] },
         { $eq: [{ $month: "$Date" }, 5] }
      ]
   }
})
© www.soinside.com 2019 - 2024. All rights reserved.