范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

技术干货如何在MongoDB中轻松使用GridFS?

  GridFS是用于存储和检索超过16 MB大小限制的BSON文档文件的规范。  注意
  GridFS 不支持多文档事务
  相较于将一个文件存储在单条文档中,GridFS将文件分为多个部分或块[1],并将每个块存储为单独的文档。默认情况下,GridFS使用的块默认大小为255kB;也就是说,除最后一个块,GridFS会将文件划分为255 kB的块。最后一个块只有必要的大小。同样,最后的那个块也不会大于默认的块大小,仅使用所需的空间以及一些其他元数据。
  GridFS使用两个集合来存储文件。一个集合存储文件块,另一个集合存储文件元数据。 GridFS集合一节详细介绍了每个集合。
  当你从GridFS查询文件时,驱动程序将根据需要重新组装该文件所有的块。你可以对GridFS存储的文件进行范围查询。你还可以从文件的任意部分访问其信息,例如"跳到"视频或音频文件的中间。
  GridFS不仅可用于存储超过16 MB的文件,而且还可用于存储您要访问的任何文件而不必将整个文件加载到内存中。另请参阅何时使用GridFS。
  什么时候使用GridFS
  在MongoDB中,使用GridFS存储大于16 MB的文件。
  在某些情况下,在MongoDB数据库中存储大型文件可能比在系统级文件系统上存储效率更高。  如果文件系统限制了目录中文件的数量,则可以使用GridFS来存储所需数量的文件。  当你要访问大文件部分的信息而不必将整个文件加载到内存中时,可以使用GridFS来调用文件的某些部分,而无需将整个文件读入内存。  当你希望保持文件和元数据在多个系统和设施之间自动同步和部署时,可以使用GridFS。使用地理分布的复制集时,MongoDB可以自动将文件及其元数据分发到多个mongod实例和设施。
  如果您需要对整个文件的内容进行原子更新,请不要使用GridFS。或者,您可以存储每个文件的多个版本,并在元数据中指定文件的当前版本。上传文件的新版本后,您可以原子更新元数据中指示为"最新"状态的字段,然后在需要时删除以前的版本。
  此外,如果文件均小于16 MB BSON文档大小限制,请考虑将每个文件存储在单个文档中,而不是使用GridFS。您可以使用BinData数据类型存储二进制数据。有关使用BinData的详细信息,请参见驱动程序文档。
  使用GridFS
  要使用GridFS存储和检索文件,请使用以下任一方法:  MongoDB驱动程序。请参阅驱动程序文档,以获取有关将GridFS与驱动程序一起使用的信息。  mongofiles命令行工具。有关文档,请参见mongofiles参考。
  GridFS Collections
  GridFS将文件存储在两个集合中:  块存储二进制块。有关详细信息,请参见chunks集合。  文件存储文件的元数据。有关详细信息,请参见文件集合。
  GridFS通过使用存储桶名称为每个集合添加前缀,将集合放置在一个公共存储桶中。默认情况下,GridFS使用两个集合以及一个名为fs的存储桶:  fs.files  fs.chunks
  您可以选择其他存储桶名称,也可以在一个数据库中创建多个存储桶。完整集合名称(包括存储桶名称)受命名空间长度限制。
  块集合
  块[1]集合中的每个文档都代表了GridFS中表示的文件的不同的块。此集合中的文档具有以下格式: {    "_id" : ,    "files_id" : ,    "n" : ,    "data" :   }
  chunks集合中的文档包含以下字段: chunks._id  块的唯一ObjectId。  chunks.files_id  在files集合中指定的"父"文档的_id。  chunks.n  块的序列号。GridFS从0开始对所有块进行编号。  chunks.data  块BSON二进制类型的荷载。
  文件集合
  文件集合中的每个文档代表GridFS中的一个文件。  {    "_id" : ,    "length" : ,    "chunkSize" : ,    "uploadDate" : ,    "md5" : ,    "filename" : ,    "contentType" : ,    "aliases" : ,    "metadata" : ,  }
  files集合中的文档包含以下一些或全部字段:  files._id
  该文档的唯一标识符。 _id是您为原始文档选择的数据类型。MongoDB文档的默认类型是BSON ObjectId。  files.length
  文档的大小(以字节为单位)。  files.chunkSize
  每个块的大小(以字节为单位)。GridFS将文档分为大小为chunkSize的块,最后一个除外,后者仅根据需要而变大。默认大小为255 KB。  files.uploadDate
  GridFS首次存储这个文档的日期。此值为有日期类型。  files.md5
  过期
  FIPS 140-2禁止使用MD5算法。MongoDB驱动程序已弃用MD5支持,并将在未来版本中删除MD5的生成。需要文件摘要的应用程序应在GridFS外部实现它,并将其存储在files.metadata中。
  filemd5命令返回的完整文件的MD5哈希。此值为字符串类型。  files.filename
  可选的。GridFS文件的可读名称。  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]
  (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 开发工程师,陕西西安。

中国北京8英寸MEMS国际代工线建设项目可行性研究报告资金使用可行性分析(一)8英寸MEMS国际代工线建设项目1项目基本情况项目名称8英寸MEMS国际代工线建设项目。项目实施主体纳微矽磊国际科技(北京)有限公司。项目实施地址北京经济技重大转变!苹果悄悄放松了备受争议的iPhone隐私政策据英国金融时报当地时间9日报道,苹果公司放松了针对iPhone隐私的政策,并允许App收集用户信息用于定向广告,不过苹果尚未承认这项转变。今年4月,苹果调整隐私政策并推行了ATT(联想笔记本小常识fnq快捷键失效时查看对应的驱动是否被禁用f1f12特殊功能开关可以在bios里面设定,如果觉得复杂可以下载LenovoVantage中调节。(这款软件可以在微软商店下载,里面有很有朋友问我OPPOfindX3现在值不值得购买,今天出一期findX3这款手机是OPPO3月份推出的,有Pro,有摄影师版。我先来说一下上手体验,初上手没有很大惊艳,我个人感觉屏幕息屏状态下,没有带给我视觉的冲击感,属于微曲面背面呢确实挺拼多多在走下坡路吗?拼多多目前走没走下坡路不好说,我是一直以来没有通过拼多多买过东西,哪怕只有一件也是没有的事。虽说自己也不是有钱人,但如果买东西买到一件假货或者换来换去的残次品,那是绝对不能容忍的拼收音机远程接收者DXer的自白和对德生PL880作为枕边机一些初印象收音机接收DXer的自白和德生PL880的一些初步印象文乔克艾略特为PassportToWorldBandRadio撰稿的那一天,是我最喜欢做的事情之一,另一半时间,我则昏昏欲睡,有源无源音响的特点您知道什么是有源音箱,什么事无源音箱吗?你知道有源音箱和无源音箱之间的区别吗?今天小编就为您详细的介绍一下这两种音箱的概念以及它们之间的区别,一起来学习一下吧有源音箱和无源音箱的区vivo新机曝光,直屏设计,边框很窄?vivo的OriginOSOcean设计看起来曝光了,有点意思,当然这次看起来不光是系统有变化,也算是曝光了一个新机。这次的系统看起来是可以定制的系统,桌面排列和图标都是可以定制的妥妥转行了新东方成立酷学严选公司近日,有细心的网友发现,新东方旗下成立了一家名为南京酷学严选科技有限公司,其注册资本为100万。经营范围含出版物零售教学用模型及教具制造教学用模型及教具销售电子产品销售玩具销售工艺华为MateV折叠屏渲染图曝光,堪比三星Galaxyzflip3对于华为,蚕豆一直有一种很真实的想法,那就是什么呢?没错价格太贵,很多系列我们穷苦人是难以消费者的起的,像如今的P系列和mate系列就是一个例子,所以蚕豆基本没有用过华为手机,关键英特尔酷睿与AMD如何选择?盒装与散片CPU有何区别?英特尔酷睿与AMD如何选择?盒装与散片CPU有何区别?这很明显是两个问题,这个英特尔酷睿和AMD该如何选择是一个问题,盒装与散片的区别又是一个问题,我得一个一个来和大家聊聊这个问题
顶尖屏幕,性能澎湃,iQOO8Pro带来极致电竞游戏体验11。11正处于火热预售阶段,许多用户都想在这个全民购物的节日换手机,享受一波节日福利。iQOO今年11。11购机福利满满,其中iQOO8Pro作为iQOO数字系列的旗舰机竞争力十iQOOZ5x全面评测千元手机如何实现弯道超车?金融学上曾认为,进入秋收时令以后,由于农业收获的原因,人们的收支消费心理容易被心情所带动,特别是秋季的时候,家庭消费明显增加,故有金九银十之说。对于手机行业而言同样如此,大多数的手买耳机不带降噪等于买手机不带拍照FreeBuds4让你半入耳也降噪近些年来真无线耳机的发展尤为迅猛,得益于摆脱了传统耳机的线材束缚,真无线耳机带来了更加便捷和快速的佩戴方式,深受消费者的追捧。特别是在如今噪音横行的前提下,真无线耳机的主动降噪功能双十一最值得入的大屏神器TCLC12量子点MiniLED智屏前两天,微博账号TCL智屏发布了一条很有趣的视频!剧情大概是一个小女孩深夜打开智屏,连上蓝牙耳机在家蹦迪,太可爱了!可惜最后还是被爸爸妈妈抓了个现行!原来,这台智屏的蓝牙功能支持一苦于买主机没有李佳琦的excel?教你双十一拿下漫威联名超值主机今年双十一,想必有需求的诸位早已做好基础攻略,磨刀霍霍向羊毛了。今年的十一首轮预售活动也比去年提前了一天,而且时间选择在晚上8点,可以说是相当友好了。不过作为一个电竞女孩,我每年都2021OPPO开发者大会召开,OPPO游戏全面赋能平台开发者10月27日,以开放互融致善创新为主题的2021OPPO开发者大会(ODC21)在上海世博中心正式落幕。作为一家生态型科技公司,OPPO在游戏专场中向外界展示了自身在构建平台生态推中兴AX5400Pro路由器即将发布,除了自研12核芯片外还有什么?双十一购物季,可以说是各种新品接踵而至,除了智能手机之外,无线路由器也是很热闹的,在11月1日,中兴又将推出一款全新无线路由器中兴AX5400Pro。随着发布会的接近,中兴官方微博荣耀平板双11开门红,安卓阵营平板统治力开始显现双11已经拉开帷幕,平板电脑的战报十分值得关注。其中荣耀平板的战报引人注目,荣耀平板V7系列获京东11月1日全天安卓平板品类销量销售额双冠军,同时获得天猫开门红全天安卓平板品类销量Amphion芬兰之声亮相2021年英国音响展这应该是英国自去年疫情以来第一场音响展,可说是具有相当的代表性,也许也是2021年的唯一一场,本月原本还有一场音响展,不过上个月已宣告取消。英国很大,因此每一年会有几场音响展,UK展会预告爱威影音亮相第16届深圳音响耳机展作为华南地区极具规模和影响力的影音行业展,2021年第16届深圳音响耳机展将于10月15日17日在深圳中洲圣廷苑酒店盛大举行。爱威影音展厅在3F的沁冬厅,本次展会我们携旗下重量级产新音响购买的十要十不要(下)本文是源自在二年多前写的一个贴子叫音响购买的十要十不要,算是个人的一个看法和心得,给广大的选择音响的朋友一些建议。一不小心,写成了十五要和十五不要。因此一直想精减成十个呢,嘿嘿。另