Мне нужно конвертировать объект в массиве в Spring Data MongoDB - PullRequest
0 голосов
/ 16 апреля 2020

Мне нужно преобразовать объект в массиве в 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 в массив. Спасибо !!

...