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()
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
在anaconda下安装pygame教程
很多人写python都是pygame+anaconda这种模式,可是还是缺一些模块,在这里我分享一下如和在anaconda下安装pygame的教程 首先安装好anaconda,然后有管理员选项打开下图中的Anaconda Prompt 用管理员身份运行anaconda Prompt 1.png 升级安装pip 过程中选 y 确定升级pip conda install pip 安装pygame pip install pygame 现在可以 import pygame 测试一下了 是否安装成功,请在下方留言 如果此文对你有帮助,可以在下方点赞或者点喜欢,谢谢支持
- 下一篇
用Python读写Excel文件的方式比较
虽然天天跟数据打交道,也频繁地使用Excel进行一些简单的数据处理和展示,但长期以来总是小心地避免用Python直接读写Excel文件。通常我都是把数据保存为以TAB分割的文本文件(TSV),再在Excel中进行导入或者直接复制粘贴。 前段时间做一个项目,却不得不使用Python直接生成Excel文件,后来随着需求的变化,还要对已有的Excel文件进行读取。在这个过程中,研究并尝试了一些工具,也走了一些弯路。记录下来,下次再有类似需求的时候就不用漫天遍野地搜索了。 超级无敌大PK 我主要尝试了四种工具,在此并不会给出他们的排名,因为在不同的应用场景下,做出的选择会不同。 XlsxWriter XlsxWriter是我最终选择的用于写操作的工具。顾名思义,它只能用来写文件。 这应该是个比较新的项目,在GitHub上看它最早的提交是在2013年1月份。其官方文档中宣称它支持: 优点 一、功能比较强 相对而言,这是除Excel自身之外功能最强的工具了。比如我就用到了它提供的:字体设置、前景色背景色、border设置、视图缩放(zoom)、单元格合并、autofilter、freeze...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS关闭SELinux安全模块
- CentOS7,CentOS8安装Elasticsearch6.8.6