MongoDB 是一個開源的 document-oriented 數據庫。 MongoDB 以鍵值對的形式存儲數據,是一個 NoSQL 數據庫程序。術語 NoSQL 意味著非關係。有關 MongoDB 的更詳細介紹,請參閱 MongoDB:An Introduction。現在讓我們使用 Python 了解 MongoDB 中的 Bulk Write 操作。
bulk_write()
PyMongo 函數bulk_write()
向服務器發送一批寫操作。批量執行寫操作可以提高寫吞吐量。
用法: bulk_write(requests, ordered = True, bypass_document_validation = False, session = None)
參數:
- requests:請求作為寫操作實例列表傳遞。
- ordered:(可選)一個布爾值,指定操作執行是以有序還是無序的方式執行的。默認情況下,它設置為 True。
- bypass_document_validation:(可選)指示是否繞過文檔驗證的值。
- session:(可選)一個 ClientSession。
範例1:使用執行多個請求bulk_write()
。
# importing the module
from pymongo import MongoClient, InsertOne, DeleteOne, ReplaceOne
# creating a MongoClient object
client = MongoClient()
# connecting with the portnumber and host
client = MongoClient("mongodb://localhost:27017/")
# accessing the database
database = client['database']
# access collection of the database
mycollection = mydatabase['myTable']
# defining the requests
requests = [InsertOne({"Student name":"Cody"}),
InsertOne({ "Student name":"Drew"}),
DeleteOne({"Student name":"Cody"}),
ReplaceOne({"Student name":"Drew"},
{ "Student name":"Andrew"}, upsert = True)]
# executing the requests
result = mycollection.bulk_write(requests)
for doc in mycollection.find({}):
print(doc)
在這裏,前兩個文檔是使用命令 InsertOne 插入的。然後使用 DeleteOne 命令,刪除學生名:Cody 的文檔。使用 ReplaceOne 命令,名為 Drew 的學生將替換為姓名 Andrew。因此,所有這些命令都按順序執行,我們得到以下輸出:
輸出:
{‘_id’:ObjectId(‘5f060aa5a9666ecd86f5b6bd’), ‘Student name’:‘Andrew’}
範例2:
# importing the modules
from pymongo import MongoClient, InsertOne, DeleteOne, ReplaceOne, UpdateOne
# creating a MongoClient object
client = MongoClient()
# connecting with the portnumber and host
client = MongoClient("mongodb://localhost:27017/")
# accessing the database
database = client['database']
# access collection of the database
mycollection = mydatabase['myTable']
# defining the requests
requests = [InsertOne({ "x":5}),
InsertOne({ "y":2}),
UpdateOne({'x':5}, {'$inc':{'x':3}}),
DeleteOne({ "y":2})]
# executing the requests
result = mycollection.bulk_write(requests)
for doc in mycollection.find({}):
print(doc)
這裏首先使用 InsertOne 命令插入兩個文檔。然後更新 x 等於 5 的文檔,並將其值增加 3。最後,使用命令 DeleteOne 刪除包含 y 的文檔。
輸出:
{'_id':ObjectId('5f060cd7358fae75aad1ae94'), 'x':8}
相關用法
- Python MongoDB Delete_one()用法及代碼示例
- Python MongoDB Delete_many()用法及代碼示例
- Python MongoDB Update_one()用法及代碼示例
注:本文由純淨天空篩選整理自gauravbabbar25大神的英文原創作品 Python MongoDB – bulk_write()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。