0

我在尝试使用以下命令对结果进行分组时遇到 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 和 results 被正确填充(如果我删除名称),但是当我包含名称时,我得到了这个异常:

“例外:组聚合字段‘名称’必须定义为对象内的表达式”。

4

1 回答 1

2

请使用$first或之类的组累加运算符$last

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

{
    "$group": {
        "_id": "$testCaseId",
        "name": {"$first" : "$name"},
        "results": {
            "$push": {
                "testCaseId": "$testCaseId",
                "executionId": "$executionId",
                "resultCode": "$resultCode",
                "time": "$time"
            }
        }
    }
}
于 2016-09-24T06:39:00.260 回答