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 ...
随机推荐
- EntityFramework Code-First-------领域类配置之DataAnnotations
EF Code-First提供了一个可以用在领域类或其属性上的DataAnnotation特性集合,DataAnnotation特性会覆盖默认的EF约定. DataAnnotation存在于两个命名空 ...
- ipython notebook开通远程
之前只是会用,别人告诉我命令和大概怎么设置的,今天自己搭建才发现一知半解搞不定啊. 目的:远程通过ipython notebook调用服务器. 服务器是ubuntu16.04 本地机器win7 配置方 ...
- Unity3D usage Experience
I have been using Unity3D to make game for half one year. I began to lean Unity3D with some books, o ...
- 给xcode项目重命名
在xcode项目开发中,经常会遇到需要修改项目名字的问题, 但是xcode本身修改项目名字比较麻烦,有时候修改的不完全,有时候修改了项目无法打开,无奈只能建一个新项目.这里提供一种修改xcode项目名 ...
- rest_framework--序列化组件
#####序列化组件##### 一.什么是序列化 在python中一切皆对象,把对象从内存中变成可存储或传输的过程称之为序列化. 你写一个django项目肯定是有前后端交互的吧,虽然django也可以 ...
- js解决异步的方法汇总
参考:https://www.cnblogs.com/zuobaiquan01/p/8477322.html 一.callback回调函数 回调是一个函数被作为一个参数传递到另一个函数里,在那个函数执 ...
- 使用CSS3制作首页登录界面实例
响应式设计 在这个页面中,使用下面3点来完成响应式设计 1.最大宽度 .设定了一个 max-width 的最大宽度,以便在大屏幕时兼容.: 2.margin : 30px auto; 使其保持时刻居中 ...
- z-blog博客组插件openSug.js百度搜索下拉框提示代码
z-blog安装openSug插件即可获得带有“搜索框提示”功能的搜索框,让z-blog搜索更便捷! https://www.opensug.org/.../opensug_z-blog_v1.0 ...
- [转]Nginx伪静态配置和常用Rewrite伪静态规则集锦
Nginx伪静态配置和常用Rewrite伪静态规则集锦 作者: 字体:[增加 减小] 类型:转载 时间:2014-06-10 我要评论 伪静态是一种可以把文件后缀改成任何可能的一种方法,如果我想把ph ...
- PHP 使用程序进行数据库字典文件生成 导出数据库字典
作为一个程序员肯定是不愿意写文档的!!! 尤其最麻烦的数据库字典文档 所以偷懒写了一个PHP程序来进行数据库字典导出 记录一下 以免以后忘记 //使用的是Laravel框架 可以转换成原生导出$ta ...