- files._id
- files.length
- files.chunkSize
- files.uploadDate
- files.md5
FIPS 140-2禁止使用MD5算法 。MongoDB驱动程序已弃用MD5支持,并将在未来版本中删除MD5的生成 。需要文件摘要的应用程序应在GridFS外部实现它,并将其存储在files.metadata中 。
filemd5命令返回的完整文件的MD5哈希 。此值为字符串类型 。
- files.filename
- files.contentType
可选的 。GridFS文件的有效MIME类型 。仅应用程序用 。
使用files.metadata来存储与GridFS文件的MIME类型有关的信息 。
- files.aliases
可选的 。别名字符串数组 。仅用于应用程序
使用files.metadata来存储与GridFS文件的MIME类型有关的信息 。
- files.metadata
GridFS索引
GridFS使用每个块和文件集合上的索引来提高效率 。为了方便起见,符合GridFS规范的驱动程序会自动创建这些索引 。您还可以根据需要创建任何其他索引,以满足您的应用程序需求 。
chunks索引
GridFS使用files_id和n字段在chunks集合上使用唯一的复合索引 。可以有效地检索块,如以下示例所示:
db.fs.chunks.find( { files_id: myFileID } ).sort( { n: 1 } )
符合GridFS规范的驱动程序将在读取和写入操作之前自动确保此索引存在 。有关GridFS应用程序的特定行为,请参阅相关的驱动程序文档 。如果该索引不存在,则可以执行以下操作以使用mongo shell创建它:
db.fs.chunks.createIndex( { files_id: 1, n: 1 }, { unique: true } );
files索引GridFS在files集合上的filename和uploadDate字段上使用索引 。该索引允许高效地检索文件,如本示例所示:
db.fs.files.find( { filename: myFileName } ).sort( { uploadDate: 1 } )
符合GridFS规范的驱动程序将在读取和写入操作之前自动确保此索引存在 。有关GridFS应用程序的特定行为,请参阅相关的驱动程序文档 。如果该索引不存在,则可以执行以下操作以使用mongo shell创建它:
db.fs.files.createIndex( { filename: 1, uploadDate: 1 } );
(1, 2) 在GridFS上下文中使用术语块与在分片上下文中使用术语块无关 。
分片GridFS
GridFS考虑两个集合-files和chunks 。
chunks集合
要分片chunks集合,请使用{ files_id : 1, n : 1 } 或{ files_id : 1 } 作为分片键索引 。files_id是一个ObjectId,并且单调更改 。
对于不运行filemd5来验证成功上传的MongoDB驱动程序(例如,支持MongoDB 4.0或更高版本的MongoDB驱动程序),可以将哈希分片用于chunks集合 。
如果MongoDB驱动程序运行filemd5,则不能使用Hashed Sharding 。有关详细信息,请参阅SERVER-9888 。
files集合
files集合很小,仅包含元数据 。GridFS所需的所有密钥都不适合在分片环境中进行平均分配 。保留未分片的files允许所有文件元数据文档保留在主分片上 。
如果必须分片files集合,请使用_id字段,可能与应用程序字段结合使用 。
原文链接:
https://github.com/mongodb-china/MongoDB-CN-Manual/blob/master/cun-chu/gridfs.md
关于作者:张琦
JAVA 开发工程师,陕西西安 。
【如何在MongoDB中轻松使用GridFS?】
推荐阅读
- 喝茉莉花茶的危害,茉莉花茶如何喝
- 含笑花茶如何做,这些花茶真的可以祛斑
- 喝自己炒茶,如何鉴别普洱茶是不是好茶
- 新手如何在淘宝网上开店 新手如何开淘宝店铺
- 如何看懂化妆品成分表
- 刹车片多久更换一次?如何判断更换标准?这篇文章全部告诉你
- 车龄超过十年的车安全性能大打折扣,赶紧换车?事实果真如此吗?
- 如何预防秋冬季呼吸道疾病
- 如何绑定儿童医保电子凭证?手把手教您
- 负面情绪竟然可以引发这么多疾病 出现负面情绪还如何缓解