Поиск…


Синтаксис

  • {$ set: {<field1>: <значение1>, <поле2>: <значение2>, ...}}

параметры

параметры Имея в виду
FIELDNAME Поле будет обновлено: { name : 'Tom'}
targetVaule Значение будет присвоено полю: {name: 'Tom' }

замечания

Ссылка для оператора $ set : $, установленного на оффициальном веб-сайте

$ set для обновления указанного поля (ов) в документе (-ях)

I.Overview

Значительная разница между MongoDB & RDBMS - MongoDB имеет множество видов операторов. Один из них - оператор обновления, который используется в операциях обновления.

II. Что произойдет, если мы не будем использовать операторы обновления?

Предположим, у нас есть студенческая коллекция для хранения информации о студентах (вид таблицы): введите описание изображения здесь

Однажды вы получите работу, которая должна изменить пол Тома от «М» до «F». Это легко, не так ли? Таким образом, вы быстро пишете отчет, основанный на опыте вашей РСУБД:

db.student.update(
    {name: 'Tom'}, // query criteria
    {sex: 'F'} // update action
);

Давайте посмотрим, каков результат: введите описание изображения здесь

Мы потеряли возраст и имя Тома! Из этого примера мы можем знать, что весь документ будет переопределен, если без оператора обновления в операторе обновления. Это поведение MongoDB по умолчанию.

Оператор $. $ Set

Если мы хотим изменить только поле «пол» в документе Тома, мы можем использовать $set чтобы указать, какие поля мы хотим обновить:

db.student.update(
    {name: 'Tom'}, // query criteria
    {$set: {sex: 'F'}} // update action
);

Значение $set - это объект, его поля обозначают те поля, которые вы хотите обновить в документах, а значения этих полей - целевые значения.

Итак, результат правильный: введите описание изображения здесь

Кроме того, если вы хотите одновременно изменить «секс» и «возраст», вы можете добавить их в $set :

db.student.update(
    {name: 'Tom'}, // query criteria
    {$set: {sex: 'F', age: 40}} // update action
);


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow