Проблема с датой и датой в Spring Data MongoDB - PullRequest
0 голосов
/ 03 апреля 2020

Я использую данные Spring MongoDB с Spring Boot и пишу пользовательские запросы, используя Criteria. Мне нужно получить данные из базы данных mon go на основе диапазона времени данных. В запросе я передаю statDatetime > 24-Mar-2020T00.00.00.000Z и StartDateTime < 27-Mar-2020T23.59.00.000Z, чтобы получить данные, попадающие в заданный диапазон, но здесь пружинные данные mon go дБ, рассматривающие каждый день как диапазон одного дня, и выдачу запроса с условиями 4 AND для указанного диапазона .

Ниже приведен мой запрос. здесь я проверяю Start_Date_Time вместе с другими параметрами:

final Criteria criteria = where(BASE).in(base)
                               .andOperator(where(SEQUENCE_INFO_KEY)
                               .is(sequenceInfoKey),
                          where(START_DATE_TIME).gte(startDateTime),
                          where(START_DATE_TIME).lte(endDateTime),
                          where(DELETED).is(false));

final Query query = new Query(criteria);

Запрос формируется как:

     {
        "$and": [
          {},
          {
            "$or": [
              {
                "$and": [
                  {
                    "startDateTime": {
                      "$gte": {
                        "$date": 1585008000000
                      }
                    }
                  },
                  {
                    "startDateTime": {
                      "$lte": {
                        "$date": 1585094340000
                      }
                    }
                  }
                ]
              },
              {
                "$and": [
                  {
                    "startDateTime": {
                      "$gte": {
                        "$date": 1585094400000
                      }
                    }
                  },
                  {
                    "startDateTime": {
                      "$lte": {
                        "$date": 1585180740000
                      }
                    }
                  }
                ]
              },
              {
                "$and": [
                  {
                    "startDateTime": {
                      "$gte": {
                        "$date": 1585180800000
                      }
                    }
                  },
                  {
                    "startDateTime": {
                      "$lte": {
                        "$date": 1585267140000
                      }
                    }
                  }
                ]
              },
              {
                "$and": [
                  {
                    "startDateTime": {
                      "$gte": {
                        "$date": 1585267200000
                      }
                    }
                  },
                  {
                    "startDateTime": {
                      "$lte": {
                        "$date": 1585353540000
                      }
                    }
                  }
                ]
              }
            ]
          }

Пожалуйста, дайте мне знать, как избежать формирования этого отдельного диапазона дат?

...