Как построить массив некоторых объектов для передачи в метод в SpEL (spring-el)? - PullRequest
0 голосов
/ 12 декабря 2018

Я использую spring-data-mongodb.Работая над агрегацией, я застрял в конвейере проекции.

У меня есть следующий конвейер проекции, который я пытаюсь преобразовать в выражение SpEL.

{
    "$project": {
        "intervalNumber": {
            "$concatArrays" : [
                [
                    {
                        "$month": {
                            "$add" : [ "$oDate" , 1]
                        }
                    }
                ]
            ]
        }
    }
}

Я попробовал что-то в строках, как показано ниже

project()
    .andExpression("concatArrays(month(oDate + [0]", 1)

Это дает

{
    "$project": {
        "intervalNumber": {
            "$concatArrays" : [
                {
                    "$month": {
                        "$add" : [ "$oDate" , 1]
                    }
                }
            ]
        }
    }
}

Я ищу способ, где {"$ month: ...} упакован в массив как [{" $ month ":...}] Я пробовал новый объект [] {...}, но, похоже, он не работает.

В настоящее время я использую обходной путь, описанный ниже, который я нахожу подверженным ошибкам. Также япотерять способность параметризовать $ add

project()
    .and(context -> new BasicDBObject(
            "$concatArrays",
            Collections.singletonList(
                    Collections.singletonList(
                            new BasicDBObject(
                                    "$month",
                                    new BasicDBObject("$add", new BasicDBObject("$oDate", 1))
    ))))).as(INTERVAL_NUMBER)
...