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 と結果は正しく入力されていますが (名前を削除した場合)、名前を含めると、次の例外が発生します。

「例外: グループ集計フィールド 'name' は、オブジェクト内の式として定義する必要があります」.

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 に答える