Я использую данные 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
}
}
}
]
}
]
}
Пожалуйста, дайте мне знать, как избежать формирования этого отдельного диапазона дат?