Как вызвать MongoDB addFields в Spring Mon go? - PullRequest
0 голосов
/ 27 марта 2020

У меня есть объект следующего типа в моем MongoDB

{
    ...,
    "name": {
        "en": "...",
        "am": "...",
        "ru": "..."
    },
    ...
}

Теперь я хочу выполнить следующий запрос, используя Spring Data Mon go

db.categories.aggregate({$addFields: {'name': '$name.am'}})

, где am part в $name.am - это локаль имени, поэтому оно должно быть динамически c. Я просмотрел API MongoTemplate, и, насколько я обнаружил, поддержка операции addFields отсутствует. Есть ли способ добиться этого?

1 Ответ

0 голосов
/ 27 марта 2020

Вам необходимо реализовать AggregationOperation

Одноразовое использование

AggregationOperation addFields = new AggregationOperation() {

    @Override
    public Document toDocument(AggregationOperationContext context) {
        return new Document("$addFields", new Document("name", "$name.am"));
    }

};

Generi c

public AggregationOperation aggregateAddFields(final String field, final String valueExpresion) {

    AggregationOperation addFields = new AggregationOperation() {

        @Override
        public Document toDocument(AggregationOperationContext context) {
            return new Document("$addFields", new Document(field, valueExpresion));
        }
    };

    return addFields;
}

...

AggregationOperation addFields = aggregateAddFields("name", "$name.am");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...