MongoDB 是一個 cross-platform document-oriented 和一個非關係(即 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 shell :
updateOne()
它是一個函數,我們可以通過它更新 MongoDB 數據庫或集合中的記錄。該方法主要關注我們傳遞的兩個參數,一個是定義要更新哪個文檔的查詢(即過濾器)對象,第二個是定義文檔新值的對象(即 new_values),其餘參數是可選的,我們將在語法部分討論。此函數查找與查詢匹配的第一個文檔,並使用定義文檔新值的對象對其進行更新,即根據過濾器更新集合中的單個文檔。
用法:
collection.update_one(filter, new_values, upsert=False, bypass_document_validation=False, collation=None, array_filters=None, session=None)
Parameters:
- ‘filter’:與要更新的文檔匹配的查詢。
- ‘new_values’:適用的修改。
- ‘upsert’(可選):如果是 “True”,則在沒有文檔與過濾器匹配時執行插入。
- ‘bypass_document_validation’(可選):如果是 “True”,則允許寫入文檔級驗證的 opt-out。默認值為 “False”。
- ‘collation’(可選):類的實例:‘~pymongo.collation.Collation’。此選項僅在 MongoDB 3.4 及更高版本上受支持。
- ‘array_filters’(可選):指定更新應應用哪些數組元素的過濾器列表。需要 MongoDB 3.6+。
- ‘session’(可選):一個類:'~pymongo.client_session.ClientSession'。
範例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 shell :
範例2:在本例中,我們使用 update_one() 將電視公司名稱從 ‘samsung’ 更改為 ‘sony’:
# 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 shell :
注意:“$set” 運算符將字段的值替換為指定的值。如果該字段不存在,則 “$set” 將添加具有指定值的新字段,前提是新字段不違反類型約束。
相關用法
注:本文由純淨天空篩選整理自VishwashVishwakarma大神的英文原創作品 Python MongoDB – Update_one()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。