Лекция
Привет, Вы узнаете о том , что такое обновление данных в mongodb, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое обновление данных в mongodb , настоятельно рекомендую прочитать все из категории MongoDB.
В первой главе мы изучили три из четырех операций CRUD (create, read, update and delete). Эта глава посвящена четвертой: update. У update имеются некоторые особенности, вот почему мы посвящаем этому целую главу.
В простейшей форме, update принимает 2 аргумента: селектор (where) для выборки и то, чем обновить соответствующее поле. Чтобы Moons прибавил в весе, используем следующий запрос:
db.unicorns.update({name: 'Moons'}, {weight: 890})
(Если в ходе экспериментов вы удалили данные из ранее созданной коллекции unicorns, сделайте всем документам remove, и вставьте их заново с помощью кода из главы 1)
В реальной жизни, конечно, следует обновлять документы, выбирая их по _id, однако, поскольку я не знаю какой _id MongoDB сгенерировала для вас, будем выбирать по имени - name. Теперь, давайте взглянем на обновленную запись:
db.unicorns.find({name: 'Moons'})
Вот и первый сюрприз, который нам преподнес update. Документ не найден, поскольку второй параметр используется для полной замены оригинала. Иными словами, update нашел документ по имени и заменил его целиком на новый документ (свой второй параметр). Вот в чем отличие от SQL-команды UPDATE. Иногда это идеальный вариант, который может использоваться для некоторых действительно динамических обновлений. Однако, если вам нужно всего лишь изменить пару полей, лучше всего использовать модификатор $set:
db.unicorns.update({weight: 590}, {$set: {name: 'Moons', dob: new Date(1999, 7, 18, 18, 44), loves: ['apple'], gender: 'm', vampires: 99}})
db.unicorns.find({name: 'Moons'})
мы получим ожидаемый результат. Об этом говорит сайт https://intellect.icu . Таким образом, в первом примере правильно было бы обновить weight следующим образом:
db.unicorns.update({name: 'Moons'}, {$set: {weight: 590}})
Кроме $set можно использовать и другие модификаторы для разных изящных вещей. Все эти модификаторы обновления действуют над полями - так что ваш документ не окажется перезаписан целиком. Например, модификатор $inc служит для того, чтобы изменить поле на положительную (увеличить) или отрицательную (уменьшить) величину . Например, если единорог Pilot был ошибочно награжден за убийство пары лишних вампиров, мы можем исправить эту ошибку следующим образом:
db.unicorns.update({name: 'Pilot'}, {$inc: {vampires: -2}})
db.unicorns.update({name: 'Aurora'}, {$push: {loves: 'sugar'}})
Один из приятных сюрпризов операции обновления - это возможность обновления/вставки (upsert от update - обновить и insert - вставить) Обновление/вставка обновляет документ, если он найден, или создает новый - если не найден. Обновление/вставка - полезная вещь в некоторых случаях; когда столкнетесь с подобным, сразу поймете. Чтобы разрешить вставку при обновлении, установите третий параметр в true.
db.hits.update({page: 'unicorns'}, {$inc: {hits: 1}}); db.hits.find();
db.hits.update({page: 'unicorns'}, {$inc: {hits: 1}}, true); db.hits.find();
db.hits.update({page: 'unicorns'}, {$inc: {hits: 1}}, true); db.hits.find();
Последний сюрприз метода update - это, то что он по умолчанию обновляет лишь один документ. До сих пор это было логично в случае с уже рассмотренными примерами. Однако, если выполнить что-нибудь вроде:
db.unicorns.update({}, {$set: {vaccinated: true }}); db.unicorns.find({vaccinated: true});
то вы очевидно будете ожидать, что все единороги будут привиты (vaccinated). Чтобы это сработало, нужно установить четвертый параметр в true:
db.unicorns.update({}, {$set: {vaccinated: true }}, false, true); db.unicorns.find({vaccinated: true});
Эта глава завершила введение в основные CRUD операции над коллекциями. Мы детально рассмотрели update и увидели три его интересных режима работы. Во-первых, в отличие от SQL-команды UPDATE, в MongoDB update заменяет документ целиком. Из-за этого модификатор $set очень полезен. Во-вторых, update поддерживает интуитивно простое обновление/вставку, которое особенно полезно с модификатором $inc. И, наконец, в-третьих, по умолчанию, update обновляет лишь первый найденный документ.
Исследование, описанное в статье про обновление данных в mongodb, подчеркивает ее значимость в современном мире. Надеюсь, что теперь ты понял что такое обновление данных в mongodb и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории MongoDB
Из статьи мы узнали кратко, но содержательно про обновление данных в mongodb
Комментарии
Оставить комментарий
Базы данных MongoDB
Термины: Базы данных MongoDB