Python全栈 MongoDB 数据库(聚合、二进制、GridFS、pymongo模块)
返回:统计后的文档集合db.collection.aggregate()功能:聚合函数,完成聚合操作参数:聚合条件,配合聚合操作符使用返回:聚合后的结果
from pymongo import MongoClient #创建连接
conn = MongoClient('localhost',27017)#创建数据库对象
db = conn.stu #创建集合对象
myset = db.class4 print(dir(myset))# 插入操作
myset.insert({'name':'张铁林','King':'乾隆'})
myset.insert([{'name':'张国立','King':'康熙'},\{'name':'陈道明','King':'康熙'}])
myset.insert_many([{'name':'唐国强','King':'雍正'},\{'name':'陈建斌','King':'雍正'}])
myset.insert_one({'name':'郑少秋','King':'乾隆'})
myset.save({'_id':1,'name':'聂远','King':'乾隆'}) # 查找操作cursor = myset.find({},{'_id':0})# i为每个文档对应的字典
for i in cursor:print(i['name'],'--->',i['King'])myset = db.class1
# 操作符使用引号变为字符串
cursor = myset.find({'age':{'$gt':30}},{'_id':0})cursor.limit(2)#获取前两个文档
cursor.skip(2) #跳过前两个
cursor.sort([('age',-1),('name',1)]) #对游标内容排序for i in cursor:print(i)
print(cursor.next()) #获取下一个文档dic = {'$or':[{'age':{'$gt':35}},{'gender':'w'}]}
data = myset.find_one(dic,{'_id':0})
print(data)# 修改操作
myset.update({'name':'张国立'},\{'$set':{'king_name':'玄烨'}})myset.update({'name':'霍建华'},{'$set':{'King':'乾隆'}},\upsert = True)myset.update({'King':'乾隆'},\{'$set':{'king_name':'弘历'}},multi = True)myset.update_one({'King':'康熙'},\{'$set':{'king_name':'爱新觉罗玄烨'}})myset.update_many({'King':'雍正'},\{'$set':{'king_name':'胤禛'}})# 删除操作myset.remove({'King':'康熙'})
myset.remove({'King':'乾隆'},multi = False)#查找并删除
print(myset.find_one_and_delete({'King':'乾隆'}))#关闭连接
conn.close()
from pymongo import MongoClient #创建连接
conn = MongoClient('localhost',27017)#创建数据库对象
db = conn['stu'] myset = db['class1'] # 删除所有索引
myset.drop_indexes()# 创建索引
index = myset.ensure_index('name')
# 创建复合索引
index = myset.ensure_index([('name',-1),('age',1)])
print(index)# 删除一个索引
myset.drop_index('name_1')# 创建特殊索引
index = myset.ensure_index('name',name = "myIndex",\unique = True,sparse = True)# 查看集合中的索引
for i in myset.list_indexes():print(i)myset = db.class4 l = [{'$group':{'_id':'$King','num':{'$sum':1}}},{'$match':{'num':{'$gt':1}}}
]cursor = myset.aggregate(l)
for i in cursor:print(i)conn.close()
from pymongo import MongoClient
import bson.binary conn = MongoClient('localhost',27017)
db = conn.images
myset = db.img #存储
f = open('file.jpg','rb')#转换为mongodb的二进制数据存储形式
content = bson.binary.Binary(f.read())#插入到数据库
myset.insert({'filename':'file.jpg','data':content})#提取data = myset.find_one({'filename':'file.jpg'})#通过字典获取到数据库内容写入本地
with open(data['filename'],'wb') as f:f.write(data['data'])conn.close()
from pymongo import MongoClient
#pymongo绑定的模块
import gridfsconn = MongoClient('localhost',27017)
db = conn.grid #获取gridfs对象
#fs综合了fs.files fs.chunks两个集合的属性内容
fs = gridfs.GridFS(db)#查文档生产游标
files = fs.find()#获取每一个文件的对象
for file in files:print(file.filename)if file.filename == 'file.jpg':with open(file.filename,'wb') as f:#从数据库读取出来data = file.read()#写入本地f.write(data)conn.close()
Python全栈 MongoDB 数据库(聚合、二进制、GridFS、pymongo模块)相关推荐
- Python全栈 MongoDB 数据库(数据的修改)
修改操作符的使用 $set 修改一个域的值,增加一个域 阿哲年龄修改为33 db.class1.update({name:'阿哲'},{$set:{age:33}}) 如果sex域不存在则会添加这个域 ...
- Python全栈 MySQL 数据库 (索引、数据导入、导出)
ParisGabriel 每天坚持手写 一天一篇 决定坚持几年 为了梦想为了信仰 开局一张图 表字段重命名(change) alter table 表名 change 原名 新名 数据类型: S ...
- python点击事件onclick_巨蟒python全栈开发数据库前端6:事件onclick的两种绑定方式onblur和onfocus事件window.onload解释小米商城讲解...
1.回顾上节内容(JavaScript) 一.JavaScript概述 1.ECMAScript和JavaScript的关系 2.ECMAScript的历史 3.JavaScript是一门前后端都可以 ...
- python学习之老男孩python全栈第九期_day019知识点总结——collections模块、时间模块、random模块、os模块、sys模块...
一. collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:namedtuple.deque.Counte ...
- python全栈开发_day20_加密模块和excel操作模块以及xml
hashlib模块:加密 import hashlib# 基本使用cipher = hashlib.md5('需要加密的数据的二进制形式'.encode('utf-8'))print(cipher.h ...
- Python 全栈工程师必备面试题 300 道(2020 版)
2020元旦巨献,面试升级必备!献给正在学习Python的同学! Python 全栈工程师必备面试题 300 道(2020 版) Python 面试不仅需要掌握 Python 基础知识和高级语法,还会 ...
- python26章_44G-26章节Python盖世修炼最新实战 全新升级版Python全栈架构师高级课程 从零实战...
44G-26章节Python盖世修炼最新实战 全新升级版Python全栈架构师高级课程 从零实战 ===============课程目录=============== 课程目录过长,下面只列出了章节目 ...
- Python全栈开发之MySQL
No.1 数据库概念 什么是数据库? 数据库就是一种特殊的文件,内部存储着需要的数据 RDBMS 所谓关系数据库,是建立在关系模型基础的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据 SQ ...
- python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)
python全栈开发笔记第二模块 第四章 :常用模块(第二部分) 一.os 模块的 详解 1.os.getcwd() :得到当前工作目录,即当前python解释器所在目录路径 impor ...
- python 全栈开发,Day81(博客系统个人主页,文章详情页)
一.个人主页 随笔分类 需求:查询当前站点每一个分类的名称以及对应的文章数 完成这个需求,就可以展示左侧的分类 它需要利用分组查询,那么必须要会基于双下划线的查询. 基于双下划线的查询,简单来讲,就是 ...
最新文章
- 如何在C++中动态建立二维数组
- 编译器预定义宏的查看和使用
- java response.write_@ResponseBody与response.getWriter .write()区别
- 赞!苏州大学95后硕士一作发《Nature》!
- arcgis flexviewer中由Application向widget传值
- OpenCV-Python官方教程-24-SIFT算法
- Java随笔记 - BIO Socket 编程实例
- Java中BigDecimal用法
- WP模板,WP网站模板,WP网站主题模板
- django orm级联_django系列5.3--ORM数据库的多表操作
- 流传千古的爱情传说原来竟是一个先劫色后劫财的骗局
- ndows 未能启动,Windows未能启动F8无效怎么办?
- [转载]windows搭建cloudreve对接OneDrive教程
- 【华为OD机试真题 python】不含 101 的数【2022 Q4 | 100分】
- 计算机网络统考outlook操作视频,网络教育计算机统考Outlook
- 【音频解码芯片】VS1503音频解码芯片的应用
- java 建一个car_大学java习题 :定义一个汽车类car
- Python机器学习05——判别分析
- 网站设计全攻略-3、确定网站的栏目和版块
- 进阶篇——数据库的索引