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 gridfs conn = 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 数据库(概念、安装、创建数据)
什么是关系型数据库? 是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据, 同时也是一个被组织成一组拥有正式描述性的表格( ...
- Python全栈 MongoDB 数据库(数据的修改)
修改操作符的使用 $set 修改一个域的值,增加一个域 阿哲年龄修改为33 db.class1.update({name:'阿哲'},{$set:{age:33}}) 如果sex域不存在则 ...
- Python全栈 MongoDB 数据库(Mongo、 正则基础、一篇通)
终端命令: 在线安装: sudo apt-get install mongodb 默认安装路径 : /var/lib/mong ...
- Python全栈 MongoDB 数据库(数据的查找)
非关系型数据库和关系型数据库的区别? 不是以关系模型构建的,结构自由 非关系型数据库不保证数据一致性 非关系型数据库可以在处理高并发和海量数据时弥补关系数据库的不足 非关系型数据库在技术上没有关系 ...
- python 全栈开发,Day29(昨日作业讲解,模块搜索路径,编译python文件,包以及包的import和from,软件开发规范)
一.昨日作业讲解 先来回顾一下昨日的内容 1.os模块 和操作系统交互 工作目录 文件夹 文件 操作系统命令 路径相关的 2.模块 最本质的区别 import会创建一个专属于模块的名字, 所有导入模块 ...
- python全栈开发从入门到放弃之模块和包
一 模块 1 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编 ...
- Python全栈 MySQL 数据库(SQL命令大全、MySQL 、Python调用)
为了梦想与了信仰 开局一张图 主要三个方面: 1.Linux终端命令 2.MySQL语句 3.Python调用 先删库 再跑路..... ...
- Python全栈 MySQL 数据库 (引擎、事物、pymysql模块、orm)
ParisGabriel 每天坚持手写 一天一篇 决定坚持几年 为了梦想为了信仰 开局一张图 存储引擎(处理表的处理器) 基本操作: ...
- Python全栈 MySQL 数据库 (简述 、安装、基本命令)
ParisGabriel 每天坚持手写 一天一篇 决定坚持几年 为了梦想为了信仰 开局一张图 一个月的python已经结束了 下面就是数据库了 先说M ...
随机推荐
- 原生ajax、XMLHttpRequest和FetchAPI简单描述
什么是ajax ajax的出现,刚好解决了传统方法的缺陷.AJAX 是一种用于创建快速动态网页的技术.通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个 ...
- oracle 基本语法(一)
1.基本语句: .查询每个部门工资最高的人的详细记录 select * from emp e,(select max(sal) max,deptno from emp group by deptno) ...
- ubuntu开启ssh连接
1.安装openssh-server sudo apt-get install -y openssh-server 2.修改/etc/ssh/sshd-config配置 PermitRootLogin ...
- requireJs sass侧边栏
koala 下载 将sass编译为css文件 1 嵌套 2 $变量 3 @mixin 函数名(参数) 4 @include 函数 调用 5 @import "xxx" 引 ...
- sharepoint2013配置开发环境
- 学习WebSocket笔记
由于HTTP协议是无状态的,服务器只会响应来自客户端的请求,但是它与客户端之间不具备持续连接. 当用户在浏览器上进行操作时,可以请求服务器上的api:但是反过来不可以:服务端发生了一件事,无法将这个事 ...
- Java项目中的下载 与 上传
使用超级链接下载,一般会在浏览器中直接打开,而不是出现下载框 如果要确保出现下载框下载文件,则需要设置response中的参数: 1是要设置用附件的方式下载 Content-Disposition: ...
- 怎样在Swift中使用CocoaPods
怎样在Swift中使用CocoaPods 它不是神秘的亚马逊区域的部落人用手捡出来的生可可的豆荚,肯定不是!让CocoaPods website来回答可能是最好的: CocoaPods是Cocoa项目 ...
- c# LRU实现的缓存类
在网上找到网友中的方法,将其修改整理后,实现了缓存量控制以及时间控制,如果开启缓存时间控制,会降低效率. 定义枚举,移除时使用 public enum RemoveType { [ ...
- Navicat for Mysql中错误提示索引过长1071-max key length is 767 byte
1.建用户信息表 tb_person_info create table tb_person_info( user_id int(10) auto_increment, `name` varchar( ...