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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。