MongoDB中的$ group命令问题

时间:2016-09-24 06:29:12

标签: mongodb mongodb-query aggregation-framework mongodb-aggregation

我遇到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'必须定义为对象内的表达式”。

1 个答案:

答案 0 :(得分:2)

请使用$first$last等群组累积操作符。

$first:从每个组的第一个文档中返回一个值。 $last:返回每个组的最后一个文档中的值。

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