You are currently viewing Python MongoDB – Update_one() (обновить запись)

Python MongoDB – Update_one() (обновить запись)

MongoDB — это кроссплатформенная, ориентированная на документы и не реляционная (т. е. NoSQL) программа для баз данных. Это база данных документов с открытым исходным кодом, в которой данные хранятся в виде пар ключ-значение.

Сначала создайте базу данных, в которой мы выполним операцию update_one() :

# importing Mongoclient from pymongo
from pymongo import MongoClient

try:
	conn = MongoClient() # Making coonection

except:
	print("Could not connect to MongoDB")

# database
db = conn.database

# Created or Switched to collection
# names: GeeksForGeeks
collection = db.GeeksForGeeks

# Creating Records:
record1 = { "appliance":"fan",
		"quantity":10,
		"rating":"3 stars",
		"company":"havells"}
record2 = { "appliance":"cooler",
		"quantity":15,
		"rating":"4 stars",
		"company":"symphony"}
record3 = { "appliance":"ac",
		"quantity":20,
		"rating":"5 stars",
		"company":"voltas"}
record4 = { "appliance":"tv",
		"quantity":12,
		"rating":"3 stars",
		"company":"samsung"}

# Inserting the Data
rec_id1 = collection.insert_one(record1)
rec_id2 = collection.insert_one(record2)
rec_id3 = collection.insert_one(record3)
rec_id4 = collection.insert_one(record4)

# Printing the data inserted
print("The data in the database is:")
cursor = collection.find()
for record in cursor:
	print(record)

Выход :

Оболочка MongoDB:

updateOne()

Это функция, с помощью которой мы можем обновить запись в базе данных или коллекции MongoDB. Этот метод в основном фокусируется на двух переданных нами аргументах: один-объект запроса (т. е. фильтр), определяющий, какой документ необходимо обновить, а второй-объект, определяющий новые значения документа(т. е. new_values), остальные аргументы являются необязательными, которые мы обсудим в разделе синтаксис. Эта функция находит первый документ, соответствующий запросу, и обновляет его объектом, определяющим новые значения документа, т. е. Обновляет один документ в коллекции на основе фильтра.

Синтаксис:

ollection.update_one(filter, new_values, upsert=False, bypass_document_validation=False, collation=None, array_filters=None, session=None)

Параметры:

‘filter": запрос, соответствующий обновляемому документу.

‘new_values": Применяемые изменения.

‘upsert’ (optional): Если “True”, выполните вставку, если никакие документы не соответствуют фильтру.

‘bypass_document_validation’ (optional): Если “True”, позволяет пользователю отказаться от проверки на уровне документа. Значение по умолчанию - “False”.

‘ollation’ (optional): Экземпляр класса: "~pymongo.параметры сортировки.Сопоставление’. Эта опция поддерживается только в MongoDB 3.4 и выше.

"array_filters’ (optional): Список фильтров, определяющих, к каким элементам массива должно применяться обновление. Требуется MongoDB 3.6+.

‘session’ (optional): класс:’~pymongo.client_session.Клиентская сессия".

Пример 1: 

В этом примере мы собираемся обновить количество вентиляторов с 10 до 25.

# importing Mongoclient from pymongo
from pymongo import MongoClient

conn = MongoClient('localhost', 27017)
# database
db = conn.database

# Created or Switched to collection
# names: GeeksForGeeks
collection = db.GeeksForGeeks

# Updating fan quantity form 10 to 25.
filter = { 'appliance': 'fan' }

# Values to be updated.
newvalues = { "$set": { 'quantity': 25 } }

# Using update_one() method for single
# updation.
collection.update_one(filter, newvalues)

# Printing the updated content of the
# database
cursor = collection.find()
for record in cursor:
	print(record)

Выход :

Оболочка MongoDB:

Пример 2: 

В этом примере мы меняем название телевизионной компании с «samsung» на «sony» с помощью функции update_one():

# importing Mongoclient from pymongo
from pymongo import MongoClient


conn = MongoClient('localhost', 27017)

# database
db = conn.database

# Created or Switched to collection
# names: GeeksForGeeks
collection = db.GeeksForGeeks

# Updating the tv company name from
# 'samsung' to 'sony'.
filter = { 'appliance': 'tv' }

# Values to be updated.
newvalues = { "$set": { 'company': "sony" } }

# Using update_one() method for single updation.
collection.update_one(filter, newvalues)

# Printing the updated content of the database
cursor = collection.find()
for record in cursor:
	print(record)

Выход :

Оболочка MongoDB:

ПРИМЕЧАНИЕ. Оператор “$set” заменяет значение поля указанным значением. Если поле не существует, “$set” добавит новое поле с указанным значением при условии, что новое поле не нарушает ограничение типа.