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

 


推荐阅读
  • config设置源 使用pip_最全的 pip 使用指南,50 % 你可能都没用过~
    所有的Python开发者都清楚,Python之所以如此受欢迎,能够在众多高级语言中,脱颖而出,除了语法简单,上 ... [详细]
  • 如何将PHP文件上传至服务器及正确配置服务器地址 ... [详细]
  • Python 数据分析领域不仅拥有高质量的开发环境,还提供了众多功能强大的第三方库。本文将介绍六个关键步骤,帮助读者掌握 Python 数据分析的核心技能,并深入探讨六款虽不广为人知但却极具潜力的数据处理库,如 Pandas 的替代品和新兴的可视化工具,助力数据科学家和分析师提升工作效率。 ... [详细]
  • RancherOS 是由 Rancher Labs 开发的一款专为 Docker 设计的轻量级 Linux 发行版,提供了一个全面的 Docker 运行环境。其引导镜像仅 20MB,非常适合在资源受限的环境中部署。本文将详细介绍如何在 ESXi 虚拟化平台上安装和配置 RancherOS,帮助用户快速搭建高效、稳定的容器化应用环境。 ... [详细]
  • Python正则表达式详解:掌握数量词用法轻松上手
    Python正则表达式详解:掌握数量词用法轻松上手 ... [详细]
  • 在第七天的深度学习课程中,我们将重点探讨DGL框架的高级应用,特别是在官方文档指导下进行数据集的下载与预处理。通过详细的步骤说明和实用技巧,帮助读者高效地构建和优化图神经网络的数据管道。此外,我们还将介绍如何利用DGL提供的模块化工具,实现数据的快速加载和预处理,以提升模型训练的效率和准确性。 ... [详细]
  • 运用Isotonic回归算法解决鸢尾花数据集中的回归挑战
    本文探讨了利用Isotonic回归算法解决鸢尾花数据集中的回归问题。首先介绍了Isotonic回归的基本原理及其在保持单调性方面的优势,并通过具体示例说明其应用方法。随后详细描述了鸢尾花数据集的特征和获取途径,最后展示了如何将Isotonic回归应用于该数据集,以实现更准确的预测结果。 ... [详细]
  • 如何在Python中正确安装NumPy库——Python入门指南
    在Python中正确安装NumPy库是初学者必须掌握的基本技能。首先,确保你的Python环境已正确配置。接着,访问NumPy官方网站,下载与你当前Python版本相匹配的NumPy安装包。将下载的文件放置于Python安装目录下的Scripts文件夹内。最后,在命令行界面中执行 `pip install numpy` 命令完成安装。此外,建议使用虚拟环境进行安装,以避免不同项目之间的依赖冲突。 ... [详细]
  • 在Linux系统中将Python更新至3.7版本的方法如下:首先,从Python官方网站下载Python 3.7的安装包,例如使用 `wget` 命令下载 `Python-3.7.3.tgz`。其他版本的下载链接也可从Python官网获取。接下来,解压下载的文件并进入解压后的目录,运行配置脚本和编译命令以完成安装。确保在安装过程中添加Python 3.7到系统的环境变量中,以便全局使用。此外,建议检查当前系统的Python版本,以避免冲突。 ... [详细]
  • 本文详细介绍了在Windows操作系统上使用Python 3.8.5编译支持CUDA 11和cuDNN 8.0.2的TensorFlow 2.3的步骤。文章不仅提供了详细的编译指南,还分享了编译后的文件下载链接,方便用户快速获取所需资源。此外,文中还涵盖了常见的编译问题及其解决方案,确保用户能够顺利进行编译和安装。 ... [详细]
  • 如何在Linux系统中部署TensorFlow的详细指南
    本文详细介绍了在Linux系统中部署TensorFlow的过程。作者基于北京大学曹建教授的MOOC课程进行学习,但由于课程内容较旧,环境配置方面遇到了不少挑战。经过多次尝试,最终成功解决了这些问题,并总结了一套详细的安装指南,帮助初学者快速上手TensorFlow。 ... [详细]
  • 如何在MAC上配置Python和Appium开发环境
    一、需要安装的软件二、下载安装步骤2.1、安装jdk2.1.1JDK下载地址:https:www.oracle.comjavatechnologiesjavase-download ... [详细]
  • Python与Selenium自动化测试环境配置指南
    Python与Selenium自动化测试环境配置指南 ... [详细]
  • 首先,装上我们需要的pyenv,方便anaconda的安装,也可以方便后面不同python版本之间的切换 gitclonehttps:gi ... [详细]
  • Ubuntu系统(一)安装篇
    Ubuntu系统介绍及安装从网上下载Ubuntu的iso镜像文件。刻录到光盘。安装步骤1、将Ubuntu光盘插入光驱,设置光驱启动2、启动界面1、选择English& ... [详细]
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社区 版权所有