MongoDB — это система управления базами данных NoSQL. В отличие от MySQL, данные в MongoDB не хранятся в виде отношений или таблиц. Данные в MongoDB хранятся в виде документов. Документы являются объектами, подобными Javascript/JSON. Более формально документы в MongoDB используют BSON. PyMongo — это API MongoDB для python. Он позволяет считывать и записывать данные из базы данных MongoDB с помощью скрипта python. Для этого в системе должны быть установлены как python, так и MongoDB.
Update_many()
Функция обновления устарела в более новых версиях MongoDB (3.xx и выше). Более ранняя функция обновления могла использоваться как для одиночных обновлений, так и для нескольких, используя “multi = true”. Но в более новых версиях MongoDB рекомендуется использовать update_many() и update_one().
Основное различие заключается в том, что пользователю необходимо планировать заранее, если запрос будет обновлять один или несколько документов.
Синтаксис:
db.collection.updateMany(
<filter>,
<update>,
{
upsert: <boolean>,
writeConcern: <document>,
collation: <document>,
arrayFilters: [ <filterdocument1>, ... ],
hint: <document|string>
}
)
Операторы обновления в MongoDB
Установка Значений:
- $set: Используется для установки значения полей.
- $setOnInsert: Обновляйте значение только при вставке нового документа.
- $unset: Удалите поле и его значение.
Числовые операторы:
- $inc: Увеличивает значение на заданную величину.
- $min/$max: возвращает минимальное или максимальное значение.
- $mul: multiplies: умножает значения на заданную величину.
Разные Операторы:
- $currentDate: Обновляет значение поля до текущей даты.
- $rename: Переименовывает поле
Некоторые примеры использования, которые мы увидим в этой статье, где может быть полезно обновить множество записей:
- Изменение или увеличение нескольких элементов в зависимости от условия.
- Вставка нового поля в несколько или все документы.
Пример 1:
Все учащиеся с оценками выше 35 были сданы.
from pymongo import MongoClient
# Creating an instance of MongoClient
# on default localhost
client = MongoClient('mongodb://localhost:27017')
# Accessing desired database and collection
db = client.gfg
collection = db["classroom"]
# Update passed field to be true for all
# students with marks greater than 35
collection.update_many(
{"marks": { "$gt": "35" } },
{
"$set": { "passed" : "True" }
}
)
База данных после запроса:
Пример 2:
Новое поле под названием адрес добавлено ко всем документам
from pymongo import MongoClient
# Creating an instance of MongoClient
# on default localhost
client = MongoClient('mongodb://localhost:27017')
# Accessing desired database and collection
db = client.gfg
collection = db["classroom"]
# Address filed to be added to all documents
collection.update_many(
{},
{"$set":
{
"Address": "value"
}
},
# don't insert if no document found
upsert=False,
array_filters=None
)
База данных после запроса: