У меня есть группа пользователей, в которой каждый документ имеет следующую структуру:
{
"_id": "<id>",
"login": "xxx",
"solved": [
{
"problem": "<problemID>",
"points": 10
},
...
]
}
Поле solved
может быть пустым или содержать произвольное количество поддокументов. Моя цель - получить список пользователей вместе с общей оценкой (сумма points
), где пользователям, которые еще не решили какую-либо проблему, будет назначена общая оценка 0. Возможно ли это сделать с помощью одного запроса (в идеале, используя структура агрегирования)?
Я пытался использовать следующий запрос в структуре агрегирования:
{ "$group": {
"_id": "$_id",
"login": { "$first": "$login" },
"solved": { "$addToSet": { "points": 0 } }
} }
{ "$unwind": "$solved" }
{ "$group": {
"_id": "$_id",
"login": { "$first": "$login" },
"solved": { "$sum": "$solved.points" }
} }
Однако я получаю следующую ошибку:
exception: The top-level _id field is the only field currently supported for exclusion
заранее спасибо