0

Ich habe ein Problem mit Mongo DB, wo ich versuche, Ergebnisse mit dem folgenden Befehl zu gruppieren. Dies entspricht einem Java-Objekt, das die Felder ID, Name und eine Liste der Ergebnisse enthält. Allerdings wird das name-Attribut für mich nicht korrekt zugeordnet. Das $ name-Attribut existiert im Dokument, daher bin ich mir nicht sicher, was das Problem verursacht. Wenn mir jemand in die richtige Richtung zeigen kann, würde ich mich freuen. Hier

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

ist die Struktur des Java-Objekt Ich Mapping zu:

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

Und id und Ergebnisse bevölkert werden korrekt (wenn ich Namen entfernen), aber wenn ich Namen, ich Diese Ausnahme:

"Ausnahme: das Gruppenaggregatfeld 'name' muss als Ausdruck in einem Objekt definiert werden".

Antwort

2

Verwenden Sie Gruppenakkumulationsoperatoren wie $first oder $last.

$first: Gibt einen Wert aus dem ersten Dokument für jede Gruppe zurück. $last: Gibt einen Wert aus dem letzten Dokument für jede Gruppe zurück.

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