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” добавит новое поле с указанным значением при условии, что новое поле не нарушает ограничение типа.