2017-04-05 3 views
0
Aggregation aggregation = newAggregation(
    group("$meta_data.user_data.first_name", "$meta_data.user_data.last_name", "$meta_data.user_data.profile_pic", "$user_id") 
); 
AggregationResults<UsersMongoResult> groupResults = mongoTemplate.aggregate(aggregation, "chatuser_log", UsersMongoResult.class); 

public class UsersMongoResult { 
     private String first_name; 
     private String last_name; 
     private String profile_pic; 
     private String user_id; 
    } 

wenn ich die Ergebnisse pojo Klasse nur zugeordnet user_id zugeordnet zugeordnet. Wie ordne ich andere Felder bestimmten Feldern zu? Ich konnte auch im Internet keine Lösung finden.Wie aggregierte Ergebnisse zu Java Pojo zuordnen

Antwort

1

Sie können unter Aggregation versuchen, um das gewünschte Ergebnis zu erhalten.

Der Standardwert für die Verwendung von Spring ist die Verwendung eines Teils des Feldnamens als Schlüsselname. Zum Beispiel user_data.first_name ist Schlüsselname für meta_data.user_data.first_name und ist der Grund, warum das Mapping fehlschlägt.

MongoTemplateFieldsgroup Variante, um die Feldschlüsselnamen als Java-Klassenfeldnamen für den Frühling explizit zuzuordnen, um sie korrekt zuzuordnen.

Aggregation aggregation = newAggregation(
      group(Fields.fields().and("first_name", "meta_data.user_data.first_name").and("last_name","meta_data.user_data.last_name").and("profile_pic", "meta_data.user_data.profile_pic").and("user_id", "user_id")) 
    ); 
+0

habe ich versucht, Ihre Wahl, aber immer noch null Werte –

+0

Leider bekommen, wurden die Schlüssel bereits in '$ Group' Stadium abgebildet, bevor ich sie in' $ project' außer Kraft zu setzen versucht. So geändert jetzt, um ähnlichen Code in der Gruppierung zu verwenden. Kannst du es jetzt versuchen? – Veeram

+0

Danke. Es funktioniert –