Tengo una agregación:
AggregationResults<Integer> result = mongoTemplate.aggregate( Aggregation.newAggregation( Aggregation.group().count().as("value"), Aggregation.project("value").andExclude("_id"), MyData.class, Integer.class); En el shell de mongo, cuando no tengo que mapear un objeto, obtengo: { "value" : 2 }
Sin embargo, aparece el siguiente error cuando intento asignar este valor solitario: org.springframework.data.mapping.model.MappingException: No mapping metadata found for java.lang.Integer
¿Puedo evitar tener que crear una nueva clase de tipo de salida, cuando solo quiero obtener una única primitiva de Java?
Nota: Estoy siguiendo este enfoque en lugar de db.collection.count() para las inexactitudes de fragmentación que se indican aquí: https://docs.mongodb.com/manual/reference/method/db.collection.count/#sharded-clusters
AggregationResults<DBObject> result = mongoTemplate.aggregate( Aggregation.newAggregation( Aggregation.group().count().as("value"), Aggregation.project("value").andExclude("_id"), MyData.class, DBObject.class); int count = (Integer) result.getUniqueMappedResult().get("value");Entonces, no es exactamente lo que quería, porque todavía tengo que atravesar un objeto, pero no es más código que el que tenía antes y no necesitaba crear otra clase como tipo de salida.