热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MongoDBday04

文件存储

文件存储到数据库的方式

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()读取文件内容写入本地

 


推荐阅读
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 配置PHPStudy环境并使用DVWA进行Web安全测试
    本文详细介绍了如何在PHPStudy环境下配置DVWA( Damn Vulnerable Web Application ),并利用该平台进行SQL注入和XSS攻击的练习。通过此过程,读者可以熟悉常见的Web漏洞及其利用方法。 ... [详细]
  • 本文详细介绍了 Linux 系统中用户、组和文件权限的设置方法,包括基本权限(读、写、执行)、特殊权限(SUID、SGID、Sticky Bit)以及相关配置文件的使用。 ... [详细]
  • 请看|间隔时间_Postgresql 主从复制 ... [详细]
  • 深入解析JVM垃圾收集器
    本文基于《深入理解Java虚拟机:JVM高级特性与最佳实践》第二版,详细探讨了JVM中不同类型的垃圾收集器及其工作原理。通过介绍各种垃圾收集器的特性和应用场景,帮助读者更好地理解和优化JVM内存管理。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 离线环境下的Python及其第三方库安装指南
    在项目开发中,有时会遇到电脑只能连接内网或完全无法联网的情况。本文将详细介绍如何在这种环境下安装Python及其所需的第三方库,确保开发工作的顺利进行。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 如何使用MD5进行文件验证
    本文详细介绍MD5(Message-Digest Algorithm 5)的用途及如何通过MD5码来验证文件的完整性。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何使用 Go 语言编写和运行一个简单的“Hello, World!”程序。内容涵盖开发环境配置、代码结构解析及执行步骤。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 2017-2018年度《网络编程与安全》第五次实验报告
    本报告详细记录了2017-2018学年《网络编程与安全》课程第五次实验的具体内容、实验过程、遇到的问题及解决方案。 ... [详细]
author-avatar
Gala彬
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有