Можем ли мы использовать Spring репозиторий данных для обновления встроенных документов в mongodb

Можем ли мы использовать Spring репозиторий данных для обновления встроенных документов в mongodb

    {
    "_id" : 1000,
    "user_id" : "001",
    "events" : [
            {
                    "handled" : 1,
                    "profile" : 10,
                    "data" : "....."
            }
            {
                    "handled" : 1,
                    "profile" : 10,
                    "data" : "....."
            }
            {
                    "handled" : 1,
                    "profile" : 20,
                    "data" : "....."
            }
            ...
       ]
}

Я хочу обновить дескриптор до 10, где events.profile - 10. Я знаю, как это сделать с помощью mongoTemplate, но мне нужно знать, как это сделать с помощью mongoRepository. Спасибо


person RCS    schedule 23.01.2019    source источник


Ответы (1)


Насколько я понимаю, вы хотите создать репозиторий с помощью метода обновления? Во время моего повторного поиска в справочнике spring-data я не смог найти ни малейшего намека на то, что это поддерживается данными spring.

Итак, в вашем случае вы можете создать запрос вроде «Collection findByEvents_Profile (Integer id)», перебрать коллекцию и снова сохранить ее, вызвав метод saveAll репозиториев.

person Martin Baumgartner    schedule 23.01.2019
comment
Спасибо, Мартин за ответ. Я знаю эту работу. Я задал этот вопрос, чтобы узнать, поддерживает ли spring data jpa встроенное обновление документа. Если этого не произойдет, я надеюсь, что это произойдет когда-нибудь в будущем. - person RCS; 23.01.2019
comment
Я согласен с ответом выше. Но еще кое-что: если это встроенные документы, это означает объект в объекте (коллекции) ~ ›Проблема такая же, как при обновлении и объекте с репозиторием Mongo с 1 вызовом. Итак, у Mkyong есть пример (только для работы) - mkyong.com/spring-data/ - И как проблема, поднятая в Mongorepository Github: github.com/RobThree/MongoRepository/issues/41 Здесь этого не делают: | - person Nam Nguyễn; 02.05.2019