You are currently viewing Python MongoDB – Запрос Update_many

Python MongoDB – Запрос Update_many

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. Изменение или увеличение нескольких элементов в зависимости от условия.
  2. Вставка нового поля в несколько или все документы.

Пример 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
)

База данных после запроса: