當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python MongoDB bulk_write()用法及代碼示例


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}




相關用法


注:本文由純淨天空篩選整理自gauravbabbar25大神的英文原創作品 Python MongoDB – bulk_write()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。