在Python中操作MongoDB集合需要借助pymongo库实现,通过它可以完成集合的创建、数据增删改查等一系列操作,满足日常业务开发的数据处理需求。

环境准备
首先需要安装pymongo库,使用pip命令即可完成安装:
# 安装pymongo库 pip install pymongo
安装完成后,确保本地或者远程的MongoDB服务已经启动,默认端口为27017。
连接MongoDB数据库
操作集合前需要先建立到MongoDB的连接,然后选择对应的数据库,如果数据库不存在,MongoDB会在第一次插入数据时自动创建。
from pymongo import MongoClient
# 创建客户端连接,连接本地MongoDB服务
client = MongoClient('localhost', 27017)
# 选择数据库,这里选择test_db数据库
db = client['test_db']
集合的基本操作
创建集合
MongoDB中的集合类似关系型数据库中的表,创建集合有两种方式,一种是显式创建,一种是插入数据时自动创建。
# 显式创建集合,集合名为user_info
db.create_collection('user_info')
# 插入数据时自动创建集合,如果user_info集合不存在会自动创建
db.user_info.insert_one({'name': '张三', 'age': 20})
查看所有集合
可以通过list_collection_names方法查看当前数据库下的所有集合:
# 获取当前数据库所有集合名称 collection_list = db.list_collection_names() print(collection_list)
删除集合
如果不再需要某个集合,可以使用drop方法删除:
# 删除user_info集合 db.user_info.drop()
集合数据操作
插入数据
插入数据分为插入单条数据和插入多条数据,分别对应insert_one和insert_many方法。
# 插入单条数据
single_data = {'name': '李四', 'age': 22, 'city': '北京'}
result = db.user_info.insert_one(single_data)
# 打印插入数据的_id
print(result.inserted_id)
# 插入多条数据
multi_data = [
{'name': '王五', 'age': 25, 'city': '上海'},
{'name': '赵六', 'age': 28, 'city': '广州'}
]
result = db.user_info.insert_many(multi_data)
# 打印所有插入数据的_id
print(result.inserted_ids)
查询数据
查询数据可以使用find_one查询单条,find查询多条,还可以添加查询条件筛选数据。
# 查询单条数据,查询name为李四的记录
single_result = db.user_info.find_one({'name': '李四'})
print(single_result)
# 查询多条数据,查询age大于23的所有记录
multi_result = db.user_info.find({'age': {'$gt': 23}})
for item in multi_result:
print(item)
# 查询所有数据
all_data = db.user_info.find()
for item in all_data:
print(item)
更新数据
更新数据分为更新单条和更新多条,对应update_one和update_many方法,更新操作需要使用$set操作符指定要更新的字段。
# 更新单条数据,将name为李四的记录的age更新为23
db.user_info.update_one({'name': '李四'}, {'$set': {'age': 23}})
# 更新多条数据,将所有age小于25的记录的city更新为深圳
db.user_info.update_many({'age': {'$lt': 25}}, {'$set': {'city': '深圳'}})
删除数据
删除数据分为删除单条和删除多条,对应delete_one和delete_many方法。
# 删除单条数据,删除name为王五的记录
db.user_info.delete_one({'name': '王五'})
# 删除多条数据,删除age大于26的所有记录
db.user_info.delete_many({'age': {'$gt': 26}})
注意事项
- 操作完成后建议关闭数据库连接,释放资源:
client.close() - 查询条件中的比较操作符如
$gt、$lt等需要放在字段值的位置,不能放在字段名位置 - 如果插入的数据中包含_id字段,需要确保_id的唯一性,否则会插入失败
- 生产环境中连接MongoDB建议添加用户名和密码认证,避免无权限访问的安全问题