在MongoDB中,一条记录被称为“文档(document)”。使用Python的pymongo
库,可以通过多种方式将文档插入集合(collection)中,例如一次插入一条或多条。下面介绍这些实用的方法及示例。
1. 在MongoDB中插入单条文档(insert_one)
示例:向名为customers
的集合插入一条记录:
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
mydict = { "name": "John", "address": "Highway 37" }
x = mycol.insert_one(mydict)
print(x.inserted_id) # 输出自动生成的 _id
insert_one()
方法返回一个InsertOneResult
对象,可通过.inserted_id
获取新插入文档的ID。- 若未指定
_id
,MongoDB会自动为文档分配唯一_id
。
2. 一次插入多条文档(insert_many)
如果要批量插入多条,可以使用insert_many()
方法。第二个参数是一个字典列表:
mylist = [
{ "name": "Amy", "address": "Apple st 652"},
{ "name": "Hannah", "address": "Mountain 21"},
{ "name": "Michael", "address": "Valley 345"}
# 更多文档可继续添加
]
x = mycol.insert_many(mylist)
print(x.inserted_ids) # 显示已插入文档的所有 _id
如需插入更多条目,只需往列表中继续追加字典即可。
3. 自定义 _id 值
如果不想让MongoDB自动生成_id
,可以手动指定,但必须确保不与现有文档冲突:
mylist = [
{ "_id": 1, "name": "John", "address": "Highway 37"},
{ "_id": 2, "name": "Peter", "address": "Lowstreet 27"}
]
x = mycol.insert_many(mylist)
print(x.inserted_ids)
如果你重复使用已存在的_id
,插入会报错。
注意事项
- 集合延迟创建:若集合还不存在,则第一次插入文档后才会真实创建集合。
- 重复 _id 会导致报错,需要确保每个文档的 _id 唯一。
- 一次插入多条文档可提升效率,减少多次网络请求。
通过以上方法,你可轻松在Python中利用PyMongo向MongoDB集合插入文档。不论是单条或多条,指定或自动生成_id
都能满足多种需求。