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数据库的一些基本操作整理。

相关推荐
Msshu12316 小时前
Type-C 多协议快充诱骗电压芯片XSP28 芯片脚耐压高达21V 电路简单 性价比高
mongodb·zookeeper·rabbitmq·flume·memcache
想摆烂的不会研究的研究生16 小时前
每日八股——Redis(1)
数据库·经验分享·redis·后端·缓存
码熔burning16 小时前
MySQL 8.0 新特性爆笑盘点:从青铜到王者的骚操作都在这儿了!(万字详解,建议收藏)
数据库·mysql
毕设源码-郭学长17 小时前
【开题答辩全过程】以 基于SpringBoot技术的美妆销售系统为例,包含答辩的问题和答案
java·spring boot·后端
猫头虎17 小时前
2025最新OpenEuler系统安装MySQL的详细教程
linux·服务器·数据库·sql·mysql·macos·openeuler
哈库纳玛塔塔17 小时前
放弃 MyBatis,拥抱新一代 Java 数据访问库
java·开发语言·数据库·mybatis·orm·dbvisitor
追逐时光者17 小时前
精选 10 款 .NET 开源免费、功能强大的 Windows 效率软件
后端·.net
追逐时光者17 小时前
一款开源、免费的 WPF 自定义控件集
后端·.net
S***q37718 小时前
Spring Boot管理用户数据
java·spring boot·后端
毕设源码-郭学长18 小时前
【开题答辩全过程】以 基于SpringBoot框架的民俗文化交流与交易平台的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端