MongoDB学习【四】—pymongo操作mongodb数据库
一、pymongodb的安装
Python 要连接 MongoDB 需要 MongoDB 驱动,这里我们使用 PyMongo 驱动来连接。
pip安装
pip 是一个通用的 Python 包管理工具,提供了对 Python 包的查找、下载、安装、卸载的功能。
安装 pymongo
python3 -m pip3 install pymongo
python3 -m pip3 install pymongo==3.5.1 # 指定版本安装
二、pymongodb操作mongodb数据库
1.连接数据库
通过pymongo连接mongodb数据库
import pymongo
client = pymongo.MongoClient("127.0.0.1", 27017)
dblist = client.database_names() # 显示服务器上的所有数据库
# 新版本写法
dblist = client.list_database_names()
db = client["practice"] # 连接数据库,获取库,如果库名存在,则使用,不存在创建
# print(db) # 数据库操作对象
2.文档的增加
集合中插入文档使用 insert_one() 方法,该方法的第一参数是字典 name => value 对。
import pymongo
client = pymongo.MongoClient("127.0.0.1", 27017)
db = client["practice"] # 连接数据库,获取库,如果库名存在,则使用,不存在创建
# print(db) # 数据库操作对象
"""增加"""
# 增加单条
mydict = {"name":"ryxiong","age":99}
res = db.stu.insert_one(mydict)
print(res.inserted_id) # 5d2ed8f865d6b8f1c494ff78 ObjectId对象,不是字符串
# 增加多条
mylist = [{"name":"black"},{"name":"white"}]
res = db.stu.insert_many(mylist)
print(res.inserted_ids) # [ObjectId('5d2fcc93c4f3d6ecb7178c87'), ObjectId('5d2fcc93c4f3d6ecb7178c88')]
3.查询文档
MongoDB 中使用了 find 和 find_one 方法来查询集合中的数据,它类似于 SQL 中的 SELECT 语句。
查询一条数据
我们可以使用 find_one() 方法来查询集合中的一条数据。
import pymongo
from bson import ObjectId
client = pymongo.MongoClient("127.0.0.1", 27017)
db = client["practice"] # 连接数据库,获取库,如果库名存在,则使用,不存在创建
res1 = db.stu.find_one({"name": "ryxiong"})
res2 = db.stu.find_one({"_id": ObjectId("5d2f0a052a8ee222edddb297")}) # 将字符串的ObjectID转为对象后查询
查询集合中的所有数据或多条
find() 方法可以查询集合中的所有数据,类似 SQL 中的 SELECT * 操作。
import pymongo
from bson import ObjectId
client = pymongo.MongoClient("127.0.0.1", 27017)
db = client["practice"] # 连接数据库,获取库,如果库名存在,则使用,不存在创建
# 查询多个
res3 = db.stu.find({}) # 查询所有记录
res4 = db.stu.find({"name": "ryxiong"}) # 查询符合条件的所有,生成器
高级查询
查询的条件语句中,我们还可以使用修饰符。
以下实例用于读取 name 字段中第一个字母 ASCII 值大于 "H" 的数据,大于的修饰符条件为 {"$gt": "H"}
import pymongo
client = pymongo.MongoClient("127.0.0.1", 27017)
db = client["practice"] # 连接数据库,获取库,如果库名存在,则使用,不存在创建
myquery = { "name": { "$gt": "H" } }
res = mycol.find(myquery)
正则表达式查询
我们还可以使用正则表达式作为修饰符。
正则表达式修饰符只用于搜索字符串的字段。
以下实例用于读取 name 字段中第一个字母为 "R" 的数据,正则表达式修饰符条件为 {"$regex": "^R"}
import pymongo
client = pymongo.MongoClient("127.0.0.1", 27017)
db = client["practice"] # 连接数据库,获取库,如果库名存在,则使用,不存在创建
myquery = { "name": { "$regex": "^R" } }
mydoc = mycol.find(myquery)
for x in mydoc:
print(x)
查询结果排序,跳过,截取条数
如果我们要对查询结果设置指定条数的记录可以使用 limit() 方法
对结果排序通过sort()方法,对结果忽略某些结果用skip
import pymongo
client = pymongo.MongoClient("127.0.0.1", 27017)
db = client["practice"] # 连接数据库,获取库,如果库名存在,则使用,不存在创建
# 1.查询结果的排序,跳过,和截取
sort_res = list(db.stu.find().sort("age", pymongo.DESCENDING)) # 查询所有结果,并根据年龄的降序排序
skip_res = list(db.stu.find().skip(2)) # 查询所有结果,并过滤掉前两条
limit_res = list(db.stu.find().limit(2)) # 查询所有结果,并截取前两条显示
# 2.分页效果
pagination_res = list(db.stu.find().sort("age", pymongo.ASCENDING).limit(2).skip(2))
4.修改文档
在 MongoDB 中使用 update_one() 方法修改文档中的记录。该方法第一个参数为查询的条件,第二个参数为要修改的字段。
如果查找到的匹配数据多余一条,则只会修改第一条。
import pymongo
client = pymongo.MongoClient("127.0.0.1", 27017)
db = client["practice"] # 连接数据库,获取库,如果库名存在,则使用,不存在创建
"""修改"""
# 方式一
# 查询到直接更新设置值
res = db.stu.update_one({"name":"ryxiong"},{"$set":{"age":222}})
print(res.modified_count)
# 方式二.1
# 查到记录,在字典中添加值
res = db.stu.find_one({"name":"ryxiong"})
res["gender"] = "male"
res["hobby"] = "photography"
res["name"] = "ryxiong1"
# 将值更新到记录中去
res = db.stu.update_one({"name":"ryxiong"},{"$set":res})
print(res.modified_count)
5.删除数据
删除单挑
使用 delete_one() 方法来删除一个文档,该方法第一个参数为查询对象,指定要删除哪些数据
import pymongo
client = pymongo.MongoClient("127.0.0.1", 27017)
db = client["practice"]
del_res1 = db.stu.delete_one({"name": "ryxiong"}) # 删除满足条件的结果中的第一条
print(del_res1.deleted_count)
删除多条
使用 delete_many() 方法来删除多个文档,该方法第一个参数为查询对象,指定要删除哪些数据。
import pymongo
client = pymongo.MongoClient("127.0.0.1", 27017)
db = client["practice"]
query = { "name": {"$regex": "^F"} }
del_res = db.stu.delete_many(myquery) # 删除满足条件的多条
print(del_res.deleted_count)
# 删除所有
del_res = db.stu.delete_many({})
MongoDB学习【四】—pymongo操作mongodb数据库的更多相关文章
- MongoDB学习笔记:Python 操作MongoDB
MongoDB学习笔记:Python 操作MongoDB Pymongo 安装 安装pymongopip install pymongoPyMongo是驱动程序,使python程序能够使用Mong ...
- [转]MongoDB学习 C#驱动操作MongoDB
下载驱动 驱动的下载有两种方式:一种是在C#项目中通过NuGet进行安装,另一种是通过下面的链接:https://github.com/mongodb/mongo-csharp-driver/rele ...
- mongodb学习(四)CRUD操作
CRUD操作: 1. 插入操作: 直接使用 insert可执行单个操作,也可以执行批量操作 书上的batchInsert会报错.似乎被废弃了. db.foo.insert({"bar&quo ...
- python操作三大主流数据库(8)python操作mongodb数据库②python使用pymongo操作mongodb的增删改查
python操作mongodb数据库②python使用pymongo操作mongodb的增删改查 文档http://api.mongodb.com/python/current/api/index.h ...
- Python 使用pymongo操作mongodb库
Python 使用pymongo操作mongodb库 2016-12-31 21:55 1115人阅读 评论(0) 收藏 举报 分类: - - - Python(10) 版权声明:本文为博主原创文 ...
- MongoDB学习笔记一:MongoDB的下载和安装
MongoDB学习笔记一:MongoDB的下载和安装 趁着这几天比較空暇,准备学习一下MongoDB数据库.今天就简单的学习了一些MongoDB的下载和安装.并创建了存储MongoDB的数据仓库. 将 ...
- [转载]MongoDB学习 (四):创建、读取、更新、删除(CRUD)快速入门
本文介绍数据库的4个基本操作:创建.读取.更新和删除(CRUD). 接下来的数据库操作演示,我们使用MongoDB自带简洁但功能强大的JavaScript shell,MongoDB shell是一个 ...
- 使用MongoDB C#官方驱动操作MongoDB
想要在C#中使用MongoDB,首先得要有个MongoDB支持的C#版的驱动.C#版的驱动有很多种,如官方提供的,samus. 实现思路大都类似.这里我们先用官方提供的mongo-csharp-dri ...
- MongoDB学习笔记一:MongoDB基础
目录 MongoDB是什么? 学了有什么用? MongoDB入门 安装 修改数据库位置 MongoDB的启动方式 MongoDB的图形化工具 MongoDB基本命令 增 查询 更新 删除 排序 投影 ...
随机推荐
- 分布式之redis(转发)
为什么写这篇文章? 博主的<分布式之消息队列复习精讲>得到了大家的好评,内心诚惶诚恐,想着再出一篇关于复习精讲的文章.但是还是要说明一下,复习精讲的文章偏面试准备,真正在开发过程中,还是脚 ...
- 执行命令npm publish报错:403 Forbidden - PUT https://registry.npmjs.org/kunmomotest2 - You cannot publish over the previously published versions: 0.0.1.
前言 执行命令npm publish报错:403 Forbidden - PUT https://registry.npmjs.org/kunmomotest2 - You cannot publis ...
- Linux架构之Nginx 常见问题
第54章 Nginx常见问题 一.Nginx多Sever优先级 在开始处理一个http请求时,nginx会取出header头中的Host变量,与nginx.conf中每个server的server_n ...
- 仿scikit-learn模式写的kNN算法
一.什么是kNN算法 k邻近是指每个样本都可以用它最接近的k个邻居来代表. 核心思想:如果一个样本在特征空间中的k个最相邻的样本中大多数属于一个某类别,则该样本也属于这个类别. 二.将kNN封装成kN ...
- AtCoder Regular Contest 066 E - Addition and Subtraction Hard (结论+DP)
Time limit : 2sec / Memory limit : 256MB Score : 900 points Problem Statement Joisino has a formula ...
- AlphaStar: Mastering the Real-Time Strategy Game StarCraft II 博客要点
original blog: https://deepmind.com/blog/alphastar-mastering-real-time-strategy-game-starcraft-ii S ...
- python笔记(2)--字符串
一.创建字符串 使用 '' , "" , ''' 和 """ 来创建字符串 var1 = 'hello, world' var2 = "ja ...
- vue-cli项目中引入全局scss
加载一个全局设置文件 在每个组件里加载一个设置文件,而无需每次都将其显式导入,是一个常见的需求.比如为所有组件全局使用 scss 变量.为了达成此目的: npm install sass-resour ...
- 【转载】 原生js判断某个元素是否滚动到底部
document.querySelector('.content').addEventListener('scroll',function () { //读取内容区域的真实高度(滚动条高) // co ...
- 一、创建并打包Cordova的App工程
1.创建ionic4 & Angular项目 ionic start myApp tabs --type=angular 2.添加ios和android平台 ionic cordova pre ...