Может ли Spring Data Mongo обновлять только грязное поле в документе?

Я начал использовать spring-data-mongo для приложения, в котором нужно сохранить много вещей.

На самом деле мы выбрали монго, потому что он так рекламируется. Теперь, сильно пристрастившись к Spring, мы обнаружили, что наша жизнь очень проста, используя некоторые из его функций (престижность для усердных людей, работающих с данными Spring).

Но есть одно но: документ с более чем 60 fields. Итак, мой вопрос о speed и scalability заключается в том, может ли spring-data-mongo обновлять только dirty fields в mongo database так же, как Hibernate? немного похоже на то, как это было объяснено здесь Arthur Ronald F D Garcia

спасибо, что прочитали это


person black sensei    schedule 15.11.2012    source источник


Ответы (1)


Из документации MongoDB:

Если аргумент update содержит только пары поле-значение, метод update() заменяет существующий документ документом в аргументе update, за исключением поля _id.

Другими словами, обновление MongoDB работает точно так, как вы описали. Итак, если у вас есть этот документ в тестовой коллекции:

{ "_id" : "123", "oldfield" : "oldvalue" }

И запустите следующее в mongo CLI:

db.test.update({"_id": "123"}, { newfield : "value" })

Новый документ будет выглядеть так:

{"_id": "123", "newfield" : "value"}

Если вы хотите изменить только некоторые поля, вы можете использовать оператор $set, который установит значение для одного или нескольких полей. Поскольку вы используете данные весны, вы должны использовать класс MongoTemplate для внесения этих обновлений:

Query q = new Query(Criteria.where("_id").is("123"));
Update u = Update
            .update("newfield", "value")
            .set("oldfield", "newvalue");

this.template.findAndModify(query, update, Entity.class);

Вы можете прочитать об операторе $set и обновлении mongodb здесь: http://docs.mongodb.org/manual/reference/operators/#_S_set http://docs.mongodb.org/manual/applications/update

person Miguel Cartagena    schedule 05.12.2012
comment
Как это относится к весне? - person nick_j_white; 28.05.2021