- Оглавление
- updateOne()
- Что это такое?
- Синтаксис
- updateMany()
- Что это такое?
- Синтаксис
- оператор $set
- Что это такое?
- Синтаксис
- оператор $mul
- Что это такое?
- Синтаксис
- оператор $inc
- Что это такое?
- Синтаксис
- Операторы $min и $max
- Что это такое?
- Синтаксис
- оператор $currentDate
- Что это такое?
- Синтаксис
- Оператор $rename
- Что это такое?
- Синтаксис
- Синтаксис
- оператор $unset
- Что это такое?
- Синтаксис
- Полезные ссылки
Оглавление
updateOne()
updateMany()
- Оператор
$set
- Оператор
$mul
- Оператор
$inc
- Операторы
$min
и$max
- Оператор
$currentDate
- Оператор
$rename
- Оператор
$unset
- Полезные ссылки
updateOne()
Что это такое?
Это метод MongoDB, который позволяет нам обновлять один документ в коллекции, даже если мы не передаем фильтр, метод будет обновлять только один документ.
Синтаксис
updateOne()
может принимать до трех параметров, первые два из которых являются обязательными, это: фильтр; само «обновление»; и в конце параметры для обновления.
Фильтр состоит из условия, чтобы мы могли найти документ, который нужно обновить, в нем мы можем построить проверочное выражение, используя любой из операторов сравнения/логики, рассмотренных ранее.
Обновление» — это поля с новыми данными, которые будут вставлены в документ, мы можем обновить все поля или только одно. Опции — это дополнительные и необязательные настройки, которые мы можем сделать в нашем updateOne()
, например, задать правила сравнения строк
.
db.<coleção>.updateOne(
{ <filtro> },
{ <update> },
{ <opções> } # opcional
);
db.my-collection.updateOne(
{ name: "Gabriel" },
{ $set: { age: 22 } } # o operador $set será abordado mais a frente
)
назад к началу
updateMany()
Что это такое?
Это метод, который позволяет обновлять несколько документов одновременно, и если мы не используем фильтр, все документы в коллекции будут обновлены.
Синтаксис
Синтаксис updateMany()
в точности повторяет синтаксис updateOne()
, принимая до трех параметров (фильтр, обновление, опции), причем первые два являются обязательными.
db.<coleção>.updateMany(
{ <filtro> },
{ <update> },
{ <opções> } # opcional
);
db.my-collection.updateMany(
{ sale: true },
{ $mul: { price: Decimal128("0.8") } } # o operador $mul será abordado mais a frente
)
назад к началу
оператор $set
Что это такое?
Это оператор, который изменяет значение одного или нескольких указанных полей. Он может изменять как поля 1-го уровня
Документа, так и встроенные поля.
Синтаксис
Поскольку это оператор, его использование должно осуществляться в рамках метода, который его принимает, в данном случае метода update.
Использовать его очень просто, достаточно объявить его, а затем определить поля и их новые значения.
{ $set: { <campo>: <valor>, <campo>: <valor> } }
{ $set: { color: "blue" } }
назад к началу
оператор $mul
Что это такое?
Это оператор, который будет МНОГОКРАТНО умножать значение выбранного поля на указанный множитель, и, как можно ожидать, этот оператор будет работать только с числовыми полями
Синтаксис
Синтаксис $mul
так же прост, как и синтаксис $set
, с той лишь разницей, что иногда нам потребуется выполнить преобразование типа, например, из целого числа в десятичное.
Чтобы выполнить умножение, нам нужно только объявить поле, которое будет изменено, и множитель, если необходимо, нам также нужно выполнить преобразование типа.
{ $mul: { <campo>: <multiplicador>, <campo>: <conversor>(<multiplicador>) } }
{ $mul: { price: 0.8, "sale.percentage": 0.2 } }
Примечание: «Если поле, к которому мы пытаемся применить умножение, не существует, MongoDB автоматически создаст его и присвоит ему значение 0
.
назад к началу
оператор $inc
Что это такое?
Это оператор, который увеличивает или уменьшает числовые поля. Декремент, объективно говоря, является «отрицательным инкрементом», то есть мы используем $inc
с отрицательным числом.
Синтаксис
Чтобы выполнить инкремент поля, нам нужно только объявить оператор $inc
и поле, которое нужно изменить, вместе с желаемым значением.
{ $inc: { <campo>: <valor> } }
{ $inc: { qty: -5, order: 1 } }
Примечание: «Если поле, которое мы пытаемся увеличить, не существует, MongoDB автоматически создаст его и присвоит ему значение, которое мы пытаемся применить, даже если это значение будет отрицательным.
назад к началу
Операторы $min и $max
Что это такое?
Это операторы, которые выполняют сравнение, чтобы затем применить желаемую модификацию.
$min
будет применять модификацию только к тем полям, значение которых больше, чем то, которое мы указываем после оператора, проще говоря, $min
будет «перетягивать» значение поля вниз.
$max
применит модификацию только к тем полям, которые имеют меньшее значение, чем то, которое мы указали после оператора, проще говоря, $max
«перетянет» значение поля вверх.
Синтаксис
Хотя эти операторы имеют противоположное поведение, синтаксис для них одинаков.
Сначала мы объявляем оператор $min
/$max
, затем поле, которое мы хотим изменить, и, наконец, новое значение, которое мы хотим получить.
{ $min: { <campo>: <valor> } }
{ $max: { <campo>: <valor> } }
{ $min: { stamina: 0 } }
{ $max: { maxMana: 4000 } }
Примечание: «Если поле, которое мы пытаемся изменить, не существует, MongoDB автоматически создаст его и присвоит ему значение, которое мы пытаемся применить, даже если это значение будет отрицательным.
назад к началу
оператор $currentDate
Что это такое?
Это оператор, который присваивает текущую дату указанному полю, эта дата может быть двух типов: Date
, которая используется по умолчанию; или timestamps
.
Синтаксис
Чтобы использовать оператор $currentDate
, нам нужно только объявить его, указать, какое поле будет его принимать, и, наконец, передать true
в качестве значения поля.
Однако если мы хотим использовать timestamp
в качестве формата, нам нужно использовать оператор $type
, указав формат timestamp
через строку.
{ $currentDate: { <campo>: <formato> } }
{ $currentDate: { lastUpdate: true, canceled: { $type: "timestamp" } } }
Примечание: «Если поле, к которому мы пытаемся применить модификацию даты, не существует, MongoDB автоматически создаст его и присвоит ему текущую дату в указанном формате.»
назад к началу
Оператор $rename
Что это такое?
Это оператор, который позволяет изменить именование полей в одном или нескольких Документах.
Синтаксис
Общий синтаксис соответствует той же структуре, что и операторы, рассмотренные ранее: мы вызываем его, указываем поле, которое нужно изменить, и, наконец, задаем новое значение. Разница лишь в том, что $rename
изменит не значение поля, а само поле.
Синтаксис
Сначала мы вызываем оператор $rename
, затем объявляем поле, которое нужно переименовать, и, наконец, говорим, каким должно быть новое имя.
{ $rename: { <campo>: <novo nome> } }
{ $rename: { promotion: "sales" } }
Примечание: «Если поле, которое мы пытаемся переименовать, не существует, MongoDB не выдаст ошибку, а просто не внесет никаких изменений.
назад к началу
оператор $unset
Что это такое?
Когда мы хотим удалить поле из одного или нескольких документов, мы используем $unset
.
Синтаксис
Мы вызываем оператор $unset
, затем поле, которое нужно удалить, и, наконец, передаем пустую строку в качестве значения.
Стоит подчеркнуть, что значение может быть буквально любым, однако в официальной документации приводится пример с пустой строкой.
{ $unset: { <campo>: "" } }
{ $unset: { uselessCamp: "" } }
{ $unset: { uselessCamp: "trem" } } # irá deletar o campo uselessCamp igual
Примечание: «Если поле, которое мы пытаемся удалить, не существует, MongoDB не выдаст ошибку, а просто не внесет никаких изменений.
назад к началу
Полезные ссылки
updateOne
docs
updateMany
docs- Операторы обновления
- Типы данных MongoDB Mongosh
- Порядок сравнения для различных данных
- Фильтры
- Операторы запросов
назад к началу