•   MongoDB教程
  • MongoDB快速入门
  • MongoDB历史
  • MongoDB特点
  • MongoDB数据库的优点
  • MongoDB安装配置(Windows)
  • MongoDB安装配置(Ubuntu)
  • MongoDB安装配置(RedHat/CentOS)
  • MongoDB数据建模
  • MongoDB创建数据库
  • MongoDB删除数据库
  • MongoDB创建集合
  • MongoDB删除集合
  • MongoDB数据类型
  • MongoDB插入文档
  • MongoDB查询文档
  • MongoDB更新文档
  • MongoDB删除文档
  • MongoDB投影(选择字段)
  • MongoDB限制记录数
  • MongoDB排序记录
  • MongoDB索引
  • MongoDB聚合
  • MongoDB复制
  • MongoDB分片
  • MongoDB备份与恢复
  • MongoDB部署
  • Java连接MongoDB操作
  • Python连接MongoDB操作
  • PHP连接MongoDB操作
  • Ruby连接MongoDB操作
  • 高级部分
  • MongoDB关联关系
  • MongoDB数据库引用
  • MongoDB覆盖查询
  • MongoDB分析查询
  • MongoDB原子操作
  • MongoDB高级索引
  • MongoDB索引限制
  • MongoDB ObjectId
  • MongoDB Map Reduce
  • MongoDB文本搜索
  • MongoDB正则表达式
  • MongoDB GridFS
  • MongoDB固定循环集合
  • MongoDB自动递增序列
  • 用户及安全
  • MongoDB安全检查表
  • MongoDB认证
  • MongoDB用户
  • MongoDB添加用户
  • MongoDB启用身份验证
  • MongoDB管理用户和角色
  • MongoDB更改用户密码和自定义数据

MongoDB GridFS

GridFS是用于存储和检索大型文件(如图像,音频文件,视频文件等)的MongoDB规范。它是一种用于存储文件的文件系统,但其数据存储在MongoDB集合中。 GridFS存储文件可超过文件大小限制为16MB的功能。

GridFS将文件划分成块,并将每个数据块存储在单独的文档中,每个文件的最大大小为255k。

默认情况下,GridFS使用两个集合fs.files和fs.chunks来存储文件的元数据和块。 每个块由其唯一的ObjectId字段_id标识。 fs.files作为父文档进行切换。 fs.chunks文档中的files_id字段将该块链接到其父块。

以下是fs.files集合的示例文档 -

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

文档指定文件名,块大小,上传的日期和长度。

以下是fs.chunks文档的示例文档 -

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

将文件添加到GridFS

现在,使用put命令存储一个使用GridFS的mp3文件。 为此,我们将使用MongoDB安装文件夹的bin文件夹中出现的mongofiles.exe工具程序。

打开命令提示符,导航到MongoDB安装文件夹的bin文件夹中的mongofiles.exe,然后键入以下代码 -

D:\Program Files\MongoDB\Server\3.4\bin> mongofiles.exe -d gridfs put song.mp3

这里,gridfs是要存储文件的数据库的名称。 如果数据库不存在,MongoDB将自动创建一个新的文档。 song.mp3是上传文件的名称。 要在数据库中查看文件的文档,可以使用查询查询 -

> db.fs.files.find()

上述命令返回以下文档 -

{
   _id: ObjectId('595b99d9f6a6243715b3c316'), 
   filename: "song.mp3", 
   chunkSize: 381120, 
   uploadDate: new Date(1398391643474), md5: "e4f53379c909f7bed2e9d631e15c1c41",
   length: 10401959 
}

还可以使用以前查询中返回的文档ID,查看与存储文件相关的fs.chunks集合中存在的所有块,并使用以下代码:

>db.fs.chunks.find({files_id:ObjectId('595b99d9f6a6243715b3c316')})

在这个示例中,查询返回50多个文件,表示整个mp3文件被分成50个数据块。


上一篇:MongoDB正则表达式下一篇:MongoDB固定循环集合