zoukankan      html  css  js  c++  java
  • 6. MongoDB GridFS

    昨天浪费了一天的时间做了一个GridFS的Helper,说明自己对很多概念掌握不牢固,模糊不清晰;增加了自己的试错成本;

    GridFS的好处

    • 用于存储和恢复超过16M(Bjson文件限制)的文件(如:图片,音频,视频)
    • 也是文件存储的一种方式,文件你存储在电脑里面也可以,存储在电脑里面给一个路径就可以了,为什么要用文件服务器;--> 参考上一篇文章中的内容《文件服务器》再写一遍;

    文件你存储在电脑里面也可以,存储在电脑里面给一个路径就可以了,为什么要用文件服务器;

    1. 对文件的操作有记录 比如增删改查,可以花式查询并对结果做操作,之前需要用比较复杂的正则才可以

      做到,比如按照日期查询,尤其是数量高到几万的时候,Window自带的文件管理存在不足;

      查询出一批数据到别的地方,或者对其进行不同比例的压缩,前端有需要的去选择图片;各种维度去处理;

    2. 可以利用索引,比如GridFS建立表的时候会自动对Filename和ID做索引;
    3. 对文件的操作有了一个可以分的比较详细的权限管控,可以任意的与别的权限系统管理
    4. 可以对文件进行拆分,比如我只让你看到一部分这种;

    • GridFS 可以更好的存储大于16M的文件;
    • GridFS 会将大文件分割成多个小的chunk,一般为256k/个,每个chunk讲作为MongDB的一个文档(doucument)被存储在chunks集合中;

    GridFS的介绍

    GridFS 用两个集合来存储一个文件:fs.files 与 fs.chunks

    chunk的中文意思是大块,fs 是默认的存储筐,可以创建自己的存储筐;

    每个文件的实际内容被存在chunks(二进制数据)中,和文件有关的meta 数据被存储在files集合中;

    以下是简单的fs.files 集合文档

    {
       "filename": "test.txt",
       "chunkSize": NumberInt(261120),
       "uploadDate": ISODate("2014-04-13T11:32:33.557Z"),
       "md5": "7b762939321e146569b07f72c62cca4f",
       "length": NumberInt(646)
    }
    

    以下是简单的 fs.chunks 集合文档:

    {
       "files_id": ObjectId("534a75d19f54bfec8a2fe44b"),
       "n": NumberInt(0),
       "data": "Mongo Binary Data"
    }

    GridFS 命令式添加文件

    • 使用put命令添加一个mp3 文件

    EveryThing 搜索mongofiles.exe,路径上面cmd打开当前路径,输入下面的代码

    >mongofiles.exe -d gridfs put 123.mp3
    
    ehco -d 是database 的简称 没有这个数据库会直接创建;
    //查看数据库中文件的文档
    > db.fs.files.find()
    //自己本机无法执行,加了环境变量也没有用处;
    >db.fs.chunks.find({files_id:ObjectId('534a811bf8b4aa4d33fdf94d')})
    • 在Studio 3T中查看 fs.files 和fs.chunk (fs 是默认的那个筐)

      可以直接创建自己的筐;

    GridFS 帮助类

    查看 6.1 GridFS 帮助类.md

  • 相关阅读:
    浅拷贝和深拷贝
    squeezenet
    7常用函数
    6表的约束
    5select的运用
    4操作符
    3基本数据操作
    2基本数据类型
    1mysql的安装
    16多态
  • 原文地址:https://www.cnblogs.com/maanshancss/p/12978150.html
Copyright © 2011-2022 走看看