Python+MongoDB:如何插入单条与多条文档

在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都能满足多种需求。