当我们需要向 MongoDB 中插入多个文档时,使用 insert_many
方法可以很方便地批量插入多个文档,下面是基本的使用方法:
insert_result = db.collection.insert_many(documents)
其中,documents
参数是包含待插入文档的一个列表。返回值 insert_result
是一个 InsertManyResult
对象,可以通过它的 inserted_ids
属性获取插入成功的文档 id 列表。
下面通过两个示例介绍批量插入的使用方法:
示例一:向 MongoDB 中插入多个文档
import pymongo
client = pymongo.MongoClient('mongodb://localhost:27017')
db = client['test']
collection = db['mycollection']
documents = [
{"name": "张三", "age": 18},
{"name": "李四", "age": 20},
{"name": "王五", "age": 22}
]
result = collection.insert_many(documents)
print(result.inserted_ids)
上面的代码中,我们定义了一个包含三个文档的列表,使用 insert_many
方法向数据库中插入了这三个文档,然后打印出添加成功的文档 id 列表。
示例二:使用 with 语句实现插入多个文档
import pymongo
client = pymongo.MongoClient('mongodb://localhost:27017')
db = client['test']
collection = db['mycollection']
with client.start_session() as session:
with session.start_transaction():
documents = [
{"name": "张三", "age": 18},
{"name": "李四", "age": 20},
{"name": "王五", "age": 22}
]
collection.insert_many(documents, session=session)
在上面的示例中,我们使用了 with 语句自动管理事务。首先使用 client.start_session()
方法获取一个新的 session 对象,然后使用 session.start_transaction()
方法开启一个事务。在事务中,我们调用 collection.insert_many()
方法插入多个文档,并使用 session
参数将事务对象传递给方法。当 with 代码块结束时,自动执行 session.commit_transaction()
提交事务。如果在 with 代码块中有异常抛出,则自动执行 session.abort_transaction()
回滚事务。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pymongo insert_many 批量插入的实例 - Python技术站