MongoDB: Обновление и удаление данных

Обновление данных

Для обновления данных указывается фильтр, определяющий изменяемые записи. Фильтр аналогичен используемому в предыдущем уроке: он задаёт условия выбора записей по полям.

Например, в коллекции users с фильтром age: 22 изменим значение поля age на 25.

Используется функция updateOne(). В отличие от updateMany(), она обновляет только одну запись, даже если фильтру соответствуют несколько. Обновляется первая найденная запись. updateMany() обновляет все записи, удовлетворяющие фильтру.

updateOne()

updateOne() принимает два аргумента:

  1. Фильтр: Определяет обновляемые записи. Например: { age: 22 }. Используются фильтры из предыдущего урока (например, $gt, $lt, проверка на несколько значений).
  2. Обновление: Определяет изменяемые поля. Используется оператор $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(). Выбор функции зависит от задачи и количества записей.

Что будем искать? Например,программа