Обновление данных
Для обновления данных указывается фильтр, определяющий изменяемые записи. Фильтр аналогичен используемому в предыдущем уроке: он задаёт условия выбора записей по полям.
Например, в коллекции users с фильтром age: 22 изменим значение поля age на 25.
Используется функция updateOne(). В отличие от updateMany(), она обновляет только одну запись, даже если фильтру соответствуют несколько. Обновляется первая найденная запись. updateMany() обновляет все записи, удовлетворяющие фильтру.
updateOne()
updateOne() принимает два аргумента:
- Фильтр: Определяет обновляемые записи. Например: { age: 22 }. Используются фильтры из предыдущего урока (например, $gt, $lt, проверка на несколько значений).
- Обновление: Определяет изменяемые поля. Используется оператор $set. Например: { $set: { age: 25 } }.
Пример кода:
db.users.updateOne( { age: 22 }, { $set: { age: 25 } } )
Этот код изменит age только для одной записи. Повторный запуск изменит следующую подходящую запись.
updateMany()
updateMany() обновляет сразу несколько записей, соответствующих фильтру.
Пример кода:
db.users.updateMany( { age: 20 }, { $set: { age: 23 } } )
Этот код обновит все записи в users, где age равно 20, изменив его на 23.
Обновление нескольких полей
Можно указать несколько полей для обновления.
Пример кода:
db.users.updateMany( { age: 23 }, { $set: { name: "user", email: "test@mail.ru" } } )
Этот код обновит name и email во всех записях, где age равно 23. Обновляемые поля могут отличаться от используемых в фильтре.
Замена объекта (replaceOne())
replaceOne() полностью заменяет запись новым объектом.
Пример кода:
db.users.replaceOne(
{ age: 23 },
{
name: "user",
age: 23,
is_active: true,
password: "1234"
}
)
Этот код заменит первую запись, где age равно 23, новым объектом со значениями name, age, is_active и password. Не указанные поля будут удалены. Типы данных могут быть изменены.
Удаление данных
Для удаления данных используются deleteOne() и deleteMany(). deleteOne() удаляет одну запись, deleteMany() – несколько.
Пример использования deleteMany():
db.users.deleteMany( { age: { $gte: 22, $lte: 38 } } )
Этот код удалит все записи, где age находится в диапазоне от 22 до 38 включительно.
Рассмотрены функции обновления и удаления данных в MongoDB: updateOne(), updateMany(), replaceOne(), deleteOne() и deleteMany(). Выбор функции зависит от задачи и количества записей.