Сравните только часть даты YYYY-MM, используя Springboot и MongoDB - PullRequest
0 голосов
/ 04 мая 2020

У меня проблема с полями даты mongoDb. У меня есть один столбец в MongoDB собирать, который является типом даты. Которые хранят всю дату в формате ISO. Как показано ниже.

2020-05-13T14:00:00.000

Теперь из моего API я передаю 2020-05 означает YYYY-MM и я хочу получить все записи со значением 2020-05 в дБ.

Я пробовал использовать несколько опций, как показано ниже.

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.

Попробуйте запрос выше.

Это поможет вам.

1 Ответ

1 голос
/ 04 мая 2020

Было бы одно решение:

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