Мне нужно преобразовать объект в массиве в Spring Data MongoDB. Я написал этот код для поиска на многих веб-страницах, ничего не найдя:
private final MongoTemplate mongoTemplate;
public DatoContaminanteServiceImpl(MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate;
}
@Override
public List<DatoContaminante> findByDataIdxAndBetweenDataTime(int idx, String dateFrom, String dateTo) {
MatchOperation matchOperation = getMatchOperation(idx, dateFrom, dateTo);
GroupOperation groupOperation = getGroupOperation();
ProjectionOperation projectionOperation = firstProject();
List<DatoContaminante> results = mongoTemplate
.aggregate(Aggregation.newAggregation(matchOperation, projectionOperation), DatoContaminante.class, DatoContaminante.class)
.getMappedResults();
return results;
}
public MatchOperation getMatchOperation(int idx, String dateFrom, String dateTo) {
Criteria criteria = Criteria.where("data.idx").is(idx).and("data.time.s").gte(dateFrom).lte(dateTo);
return match(criteria);
}
public ProjectionOperation firstProject() {
ObjectOperators.ObjectToArray.toArray("data.iaqi");
unwind("data.iaqi");
return project("data");
}
public GroupOperation getGroupOperation() {
return group("data.datos.k").avg("data.datos.v").as("data.datos.k");
}
Код метода "getGroupOperation" - это тестовый код, он не работает. Главным образом, теперь я хочу добиться разделения data.iaqi в массиве. Ответ на это следующий:
"id": "5de437e05999b50017dd1542",
"data": {
"idx": 12410,
"iaqi": {
"co": {
"v": 0.1
},
"h": {
"v": 61.5
},
"no2": {
"v": 22.9
},
"p": {
"v": 1023.5
},
"pm10": {
"v": 41.0
},
"pm25": {
"v": 102.0
},
"so2": {
"v": 4.6
},
"t": {
"v": 10.6
},
"w": {
"v": 3.2
},
"wg": {
"v": 8.2
}
},
"datos": null,
"time": {
"s": "2019-12-01 22:00:00"
}
}
}
Мне нужно преобразовать объект с именем Iaqi в массив. Спасибо !!