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条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- MySQL8.0.19开启GTID主从同步CentOS8
- MySQL数据库在高并发下的优化方案