Wechat: yu389741| Email: gisdqy@163.com

Shop:https://www.giserdqy.com/shop

44MongoDB GridFS



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

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

默认情况下,GridFS使用两个集合fs.filesfs.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)
}
Shell

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

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

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

将文件添加到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
Shell

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

> db.fs.files.find()
Shell

上述命令返回以下文档 –

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

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

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

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

 关注右侧公众号,随时随地查看教程 MongoDB教程目录 
转载自:https://www.yiibai.com/mongodb/mongodb_gridfs.html