我遇到Mongo DB的问题,我尝试使用以下命令对结果进行分组。这映射到包含字段id,名称和结果列表的Java对象。但是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和结果(如果我删除了名称),但是当我包含名称时,我得到了这个例外:
“exception:组聚合字段'name'必须定义为对象内的表达式”。
答案 0 :(得分:2)
请使用$first
或$last
等群组累积操作符。
$first
:从每个组的第一个文档中返回一个值。 $last
:返回每个组的最后一个文档中的值。
{
"$group": {
"_id": "$testCaseId",
"name": {"$first" : "$name"},
"results": {
"$push": {
"testCaseId": "$testCaseId",
"executionId": "$executionId",
"resultCode": "$resultCode",
"time": "$time"
}
}
}
}