MongoDB day04
文件存储
文件存储到数据库的方式
1. 存储路径
将文件在本地的路径以字符串形式存储到数据库
优点 : 节省数据库空间
缺点 : 当数据库或者文件位置发生变化时文件丢失。
2. 存储文件本身
以二进制方式将文件存储到数据库
优点:数据库和文件绑定存在
缺点 : 占用数据库空间大,存储效率低,结构化麻烦
mongodb存储二进制文件
* 大文件用GridFS方法存储 >16M为大文件
* 将小文件文件转化为二进制,将文件存储到数据库
GridFS方案解释
1. 在mongodb中一个数据库创建两个集合配合完成对文件的存储
2. fs.files 用来存储文件的相关信息,为每一个文件创建一个文档,存储文件名、文件类型等信息、存入时间
3. fs.chunks 用来分块存储文件(Binery data类型数据)的实际内容
存储方式
mongofiles -d dbname put file
数据库 要存储的文件
* 如果数据库不存在自动创建;数据库总会自动创建fs.files fs.chunks两个集合
fs.files文档结构
{ "_id" : ObjectId("5b569b8969d72e103282f608"), "chunkSize" : 261120, "uploadDate" : ISODate("2018-07-24T03:22:54.259Z"), "length" : 247759369, "md5" : "a94853f4f64b3e87bf98aea770855615", "filename" : "abc.mp4" }
fs.chunks的文档结构
{ "_id" : ObjectId("5b569b8969d72e103282f61d"), "files_id" : ObjectId("5b569b8969d72e103282f608"), "n" : 20, "data" : BinData(0,"7Pa7M7M9nZt2bezsz272vbdm/7fhu672fwAAbZKbmR2S7Ndv/.....")}
* 对于同一个文件 fs.files中的_id值等于 fs.chunks中的files_id值
文件提取方法 mongofiles -d dbname get file
Grid的优缺点
优点 : 存储方便,提供较好的命令支持
缺点 : 读写效率低
游标
通过一定的操作获取返回的对象
var cursor = db.class1.find()
cursor.hasNext() 判断是否有next
cursor.next() 获取下一条数据
python操作mongodb
pymongo模块 第三方模块
安装
sudo pip3 install pymongo
操作步骤
1、创建monggodb数据库连接对象
conn = pymongo.MongoClient('localhost',27017)
2、得到数据库对象
db = conn.stu
3、获取集合对象
myset = db.class1
4、增删改查,索引,集合
调用各种myset的属性函数
5、关闭数据库连接
conn.close()
插入操作
insert()
insert_many() insert_one()
查找操作
cursor = find()
功能:对数据库进行查找
参数:同mongoshel find()
返回值:返回游标对象
cursor属性函数
find_one()
返回一个结果游标
* 在pymongo中使用·操作符的方法与mongo shell中相同,只需要转变字符串格式加上引号即可
cursor的属性函数
next()
limit()
skip()
sort([('name',1),('age',-1)])
count()
* 使用了next或者for取游标后就不能使用limit sort操作了
find_one()
返回一个字典
更新操作
update(query,updata,upsert=False,multi=False)
update_many()
update_one()
删除操作
remove(query,multi = True)
4通过循环遍历游标指定文件对象,read()读取文件内容写入本地
MongoDB day04的更多相关文章
- 【翻译】MongoDB指南/聚合——聚合管道
[原文地址]https://docs.mongodb.com/manual/ 聚合 聚合操作处理数据记录并返回计算后的结果.聚合操作将多个文档分组,并能对已分组的数据执行一系列操作而返回单一结果.Mo ...
- 【翻译】MongoDB指南/CRUD操作(四)
[原文地址]https://docs.mongodb.com/manual/ CRUD操作(四) 1 查询方案(Query Plans) MongoDB 查询优化程序处理查询并且针对给定可利用的索引选 ...
- 【翻译】MongoDB指南/CRUD操作(三)
[原文地址]https://docs.mongodb.com/manual/ CRUD操作(三) 主要内容: 原子性和事务(Atomicity and Transactions),读隔离.一致性和新近 ...
- 【翻译】MongoDB指南/CRUD操作(二)
[原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(二) 主要内容: 更新文档,删除文档,批量写操作,SQL与MongoDB映射图,读隔离(读关 ...
- 【翻译】MongoDB指南/CRUD操作(一)
[原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(一) 主要内容:CRUD操作简介,插入文档,查询文档. CRUD操作包括创建.读取.更新和删 ...
- CRL快速开发框架系列教程十二(MongoDB支持)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- MongoDB系列(二):C#应用
前言 上一篇文章<MongoDB系列(一):简介及安装>已经介绍了MongoDB以及其在window环境下的安装,这篇文章主要讲讲如何用C#来与MongoDB进行通讯.再次强调一下,我使用 ...
- MongoDB系列(一):简介及安装
什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为应用提供可扩展的高 ...
- [原]分享一下我和MongoDB与Redis那些事
缘起:来自于我在近期一个项目上遇到的问题,在Segmentfault上发表了提问 知识背景: 对不是很熟悉MongoDB和Redis的同学做一下介绍. 1.MongoDB数组查询:MongoDB自带L ...
随机推荐
- Bireme:一个 Greenplum数据仓库的增量同步工具
https://hashdatainc.github.io/bireme/ Bireme 是一个 Greenplum / HashData 数据仓库的增量同步工具.目前支持 MySQL.Postgre ...
- PostgreSQL统计信息挖掘
PG提供了丰富的统计信息,但是没有将这些统计信息使用的简单查询搞成存储过程,需要我们自己根据需要灵活的去挖掘,最近做了数据库监控,用了一些简单的东西,于是想往深了挖一下. 首先看看系统表和视图,他们都 ...
- Android程序员学WEB前端(8)-CSS(3)-盒子内联块级定位浮动-Sublime
转载请注明出处:http://blog.csdn.net/iwanghang/article/details/76618473 觉得博文有用,请点赞,请评论,请关注,谢谢!~ 盒子模型: <!D ...
- 构造字典:DictionaryBase类和SortedList类
DictionaryBase 类 msdn对DictionaryBase的文档解释 泛型KeyValuePair类 msdnd对泛型KeyValuePair类的文档解释 SortedList类 RUN ...
- 用python验证蒙提霍尔问题
最初看到这个问题是初中的时候买了一本有关数学谜题的书里面概率论的一张的课后拓展就是说到三门问题,当时作为一个扩展阅读看了一下,里面说到了一个世界智商最高的女人秒杀了美国一大群的数学高材生的精彩故事(比 ...
- Ambari HDP集群搭建文档
一.配置主机和节点机器之间SSH无密登录 多台外网服务器配置时,需要在/etc/hosts中把本机的IP地址设置为内网IP地址 http://2d67df38.wiz02.com/share/s/0J ...
- npm 可执行模块的开发&&私服发布
备注: 大家日常在使用npm 安装依赖的时候有一些是命令行工具,比如vue-cli,具体的开发比较简单,同时 可以基于此开发一些脚手架,方便开发. 1. 项目初始化 npm init 备注:按照 ...
- asciidoctor 安装试用
备注: asciidoctor 是asciidoc 的增强,使用简单,模板比较丰富,对于持续集成方面的开发也是一个不错的工具 1. 安装 a. 环境准备 MRI Ruby 1.8.7, 1. ...
- webpack 使用 extract-text-webpack-plugin 报错 Tapable.plugin is deprecated. Use new API on .hooks instead
webpack 使用 extract-text-webpack-plugin 报错 Tapable.plugin is deprecated. Use new API on .hooks instea ...
- pat1022__字符串查找
主要是对字符串的查找,为了方便并且快速的实现查找,用map会比较方便 同时如何把一个带有空格的字符串变成多个单词也有一个小技巧 char *point=book[i].keyWord;//关键词分离 ...