Я пытаюсь написать несколько запросов агрегации для MongoDB. Я довольно новичок в этом, поэтому у меня проблема с поиском, где проблема здесь:
{
"aggregate": "__collection__",
"pipeline": [
{
"$unwind": "$studia"
},
{
"$group": {
"_id": {
"course": "$course",
"start": "$start"
},
"n": {
"$sum": 1
}
}
},
{
"$sort": {
"n": -1
}
}
]
}
Этот запрос генерируется Java. Следует подсчитать и суммировать, сколько раз начинаются какие-то курсы с какой-либо даты. Но это вернет пустой результат. Это не правильно.
Мои документы:
{
"_id": "1006262",
"name": "Kugujalu",
"lname": "Najahalovu",
"studia": [
{
"id": "992",
"start": {
"$date": "1998-08-31T22:00:00.000Z"
},
"end": {
"$date": "2003-06-10T22:00:00.000Z"
},
"course": "MCH",
}
],
"_class": "com.mongodb.MongoStudent"
}
{
"_id": "1006263",
"name": "Elkjuu",
"lname": "Xjikuju",
"studia": [
{
"id": "992",
"start": {
"$date": "1998-08-31T22:00:00.000Z"
},
"end": {
"$date": "2003-06-10T22:00:00.000Z"
},
"course": "MCH",
}
],
"_class": "com.mongodb.MongoStudent"
}
Итак, я хочу запрос, который возвращает результат как:
"start": 1998-08-31T22:00:00.000Z, "course": "MCH", "n": 2
Есть идеи, где проблема?
Это сгенерирует мне запрос:
Aggregation agg = newAggregation(unwind("studia"), group("course","start").count().as("n"),
sort(Sort.Direction.DESC, "n"));