Python MongoDB 基本操作

本文内容主要为使用Python 对Mongodb数据库的一些基本操作整理。

目录

安装类库

操作实例

引用类库

连接服务器

连接数据库

添加文档

添加单条

批量添加

查询文档

查询所有文档

查询部分文档

使用id查询

统计查询

排序

分页查询

更新文档

update_one方法

update_many方法

删除文档

delete_one方法

delete_many方法

总结


安装类库

打开命令行执行以下命令:

bash 复制代码
pip install pymongo

安装过程如下:

操作实例

引用类库

首先需要引入mongodb的操作类库,示例如下:

python 复制代码
from pymongo import MongoClient

连接服务器

python 复制代码
conn = MongoClient('localhost', 27017)

连接数据库

python 复制代码
db = conn.mydb

添加文档

添加单条

使用insert_one()方法,添加一个学生记录。

示例如下:

python 复制代码
from pymongo import MongoClient

conn = MongoClient('localhost', 27017)

db = conn.mydb
student = db.student
student.insert_one({'name': 'zhangsan', 'age': 20, 'gender': 1, 'address': '北京海淀区', 'isDel': 0})

# 关闭
conn.close()
批量添加

使用insert_many()方法,添加多个学生记录。

示例如下:

python 复制代码
from pymongo import MongoClient

conn = MongoClient('localhost', 27017)

db = conn.mydb
collection = db.student
# 批量
collection.insert_many([
    {'name': '李四', 'age': 18, 'gender': 0, 'address': '北京海淀区', 'isDel': 0},
    {'name': '王五', 'age': 21, 'gender': 1, 'address': '北京昌平区', 'isDel': 0},
    {'name': '赵六', 'age': 19, 'gender': 0, 'address': '北京朝阳区', 'isDel': 0}
])

# 关闭
conn.close()

查询文档

使用查询方法,查询刚才插入的数据。根据查询条件不同分为以下类型。

查询所有文档

没有查询条件即查询集合中所有记录。

示例如下:

python 复制代码
from pymongo import MongoClient

conn = MongoClient('localhost', 27017)

collection = conn.mydb.student

res = collection.find()
for row in res:
    print(row)
    print(type(row))

conn.close()

执行结果:

查询部分文档

通过设置查询条件为小于20岁的学生,来查询符合条件的部分数据。

示例如下:

python 复制代码
res = collection.find({'age': {'$gt': 20}})
for row in res:
    print(row)
    print(type(row))

执行结果:

使用id查询

使用id查询与mysql不同,需要使用id生成器来转化id字符串后在进行查询。

示例如下:

python 复制代码
from bson.objectid import ObjectId
info = collection.find({'_id':ObjectId('666bbb5b8d4817f169319d61')})
print(info)
print(type(info))
print(info[0])

打印为对象类型,可获取其第一个元素。

执行结果:

统计查询

对符合查询条件的记录进行数量统计。

示例如下:

python 复制代码
res = collection.count_documents({'age': {'$gte': 20}})
print(res)

执行结果:

bash 复制代码
3

排序

默认升序 pymongo.DESCENDING倒序。

示例如下:

python 复制代码
import pymongo
from pymongo import MongoClient

conn = MongoClient('localhost', 27017)

collection = conn.mydb.student

# 默认升序 pymongo.DESCENDING倒序
res = collection.find().sort('age', pymongo.DESCENDING)
for row in res:
    print(row)

分页查询

通过skip()和limit()方法实现分页。

示例如下:

python 复制代码
from pymongo import MongoClient

conn = MongoClient('localhost', 27017)

collection = conn.mydb.student

res = collection.find().skip(2).limit(5)
for row in res:
    print(row)

更新文档

update_one方法

只会修改符合条件的第一条记录。

示例如下:

python 复制代码
info = collection.update_one({'name': 'zhangsan'}, {'$set': {'name': '李雷'}})
print(info)

执行结果:

bash 复制代码
# 修改成功
# UpdateResult({'n': 1, 'nModified': 1, 'ok': 1.0, 'updatedExisting': True}, acknowledged=True)
# 没有找到符合记录,未修改
# UpdateResult({'n': 0, 'nModified': 0, 'ok': 1.0, 'updatedExisting': False}, acknowledged=True)
update_many方法

会修改所有符合条件的记录。

示例如下:

python 复制代码
info = collection.update_many({'name': '李四'}, {'$set': {'name': '李武'}})
print(info)

执行结果:

bash 复制代码
UpdateResult({'n': 2, 'nModified': 2, 'ok': 1.0, 'updatedExisting': True}, acknowledged=True)

删除文档

删除文档也有两个方法。

delete_one方法

删除符合条件的第一条记录。

示例如下:

python 复制代码
info = collection.delete_one({'name': '李雷'})
print(info)
delete_many方法

删除符合条件的所有记录。

示例如下:

python 复制代码
info = collection.delete_many({'age': {'$gte': 20}})
print(info)

执行结果:

bash 复制代码
DeleteResult({'n': 2, 'ok': 1.0}, acknowledged=True)

总结

本文内容主要为使用Python 对Mongodb数据库的一些基本操作整理。

相关推荐
m0_561359673 分钟前
掌握Python魔法方法(Magic Methods)
jvm·数据库·python
xxxmine5 分钟前
redis学习
数据库·redis·学习
qq_54702617927 分钟前
Redis 常见问题
数据库·redis·mybatis
APIshop29 分钟前
Java 实战:调用 item_search_tmall 按关键词搜索天猫商品
java·开发语言·数据库
小陈phd1 小时前
混合知识库搭建:本地Docker部署Neo4j图数据库与Milvus向量库
数据库·docker·neo4j
2401_838472511 小时前
使用Python进行图像识别:CNN卷积神经网络实战
jvm·数据库·python
知识即是力量ol1 小时前
基于 Redis 实现白名单,黑名单机制详解及应用场景
数据库·redis·缓存
zhihuaba1 小时前
使用PyTorch构建你的第一个神经网络
jvm·数据库·python
u0109272711 小时前
Python Web爬虫入门:使用Requests和BeautifulSoup
jvm·数据库·python
小光学长1 小时前
基于ssm的农业管理系统8y15w544(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库