Проблема с командой $group в MongoDB

У меня проблема с БД Mongo, где я пытаюсь сгруппировать результаты, используя команду ниже. Это сопоставляется с Java-объектом, содержащим поля id, name и список результатов. Однако атрибут name не будет отображаться правильно для меня. Атрибут $ name существует в документе, поэтому я не уверен, что является причиной проблемы. Если кто-нибудь может указать мне правильное направление, это будет оценено.

{
    "$group": {
    "_id": "$testCaseId",
         "name": "$name",
         "results": {
              "$push": {
                   "testCaseId": "$testCaseId",
                   "executionId": "$executionId",
                   "resultCode": "$resultCode",
                   "time": "$time"
               }
          }
     }
}

Вот структура Java-объекта, на который я отображаю:

private String id;
private String name;
private List<Results> results;

И ID и результаты заполняются правильно (если я удаляю имя), однако, когда я включаю имя, я получаю это исключение:

msgstr "исключение: групповое поле" имя "должно быть определено как выражение внутри объекта".

1 ответ

Решение

Пожалуйста, используйте операторы накопления группы, такие как $first или же $last,

$firstВозвращает значение из первого документа для каждой группы. $lastВозвращает значение из последнего документа для каждой группы.

{
    "$group": {
        "_id": "$testCaseId",
        "name": {"$first" : "$name"},
        "results": {
            "$push": {
                "testCaseId": "$testCaseId",
                "executionId": "$executionId",
                "resultCode": "$resultCode",
                "time": "$time"
            }
        }
    }
}
Другие вопросы по тегам