Я пытаюсь реализовать запрос MongoDB для группировки и подсчета данных в диапазонах.Я нашел замечательный пост от Ли Шервуда, объясняющий, как этого добиться, и снова использовал его в своей базе данных.Проблема в том, что я работаю с Spring, и мне нужно написать его с использованием Java.Мне удалось правильно написать две части агрегации, но я застрял с этой:
$project: {
"range": {
$concat: [
{ $cond: [{ $and:[ {$gt:["$dose", 0 ]}, {$lt: ["$dose", 50]}]}, "0-50", ""] },
{ $cond: [{ $and:[ {$gt:["$dose", 50 ]}, {$lt: ["$dose", 100]}]}, "50-100", ""] },
{ $cond: [{ $and:[ {$gt:["$dose", 100 ]}, {$lt: ["$dose", 150]}]}, "100-150", ""] },
{ $cond: [{ $and:[ {$gt:["$dose", 150 ]}, {$lt: ["$dose", 200]}]}, "150-200", ""] },
{ $cond: [{ $and:[ {$gt:["$dose", 200 ]}, {$lt: ["$dose", 250]}]}, "200-250", ""] },
{ $cond: [{ $and:[ {$gt:["$dose", 250 ]}, {$lt: ["$dose", 300]}]}, "250-300", ""] },
{ $cond: [{ $gte:["$dose", 300] }, "300+", ""]}
]
}
}
Вот мой код прямо сейчас:
ProjectionOperation.ProjectionOperationBuilder projectBuilder = Aggregation.project().and("dose");
for (int startRange = 0; startRange <= 350; startRange += step) {
int endRange = startRange + step;
projectBuilder.concat(...)
}
return projectBuilder.as("range");
Как вы пишетеКонкретная часть, содержащая все условия?