English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MongoDBのGridFS

GridFSは、画像、オーディオファイル、ビデオファイルなどの大規模ファイルを保存および検索するためのMongoDBの規格です。ファイルシステムに似たファイルの保存方法ですが、データはMongoDBのコレクションに保存されます。GridFSは、ドキュメントのサイズ制限を超えるものも保存できます。16mb)のファイルです。

GridFSはファイルを複数のブロックに分割し、各データブロックを独立したドキュメントに保存します。ファイルの最大サイズは255k。

デフォルトでは、GridFSは2つのコレクションを使用します。fs.filesおよびfs.chunksファイルのメタデータとブロックを保存します。各ブロックはユニークな_id ObjectIdフィールドで識別されます。fs.filesは親ドキュメントとして機能します。files_idfs.chunksドキュメントのフィールドは、ブロックを親にリンクします。

以下は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コマンドを使用してGridFSにmpを保存3ファイルです。これには、以下を使用します。mongofiles.exeMongoDBのインストールフォルダのbinフォルダ内のユーティリティ。

コマンドプロンプトを開き、MongoDBのインストールフォルダのbinフォルダ内のmongofiles.exeに移動して、以下のコードを入力します。-

>mongofiles.exe -d gridfs put song.mp3

ここでgridfsファイルを保存するデータベースの名前です。データベースが存在しない場合、MongoDBは自動的に動的に新しいドキュメントを作成します。Song.mp3はアップロードファイルの名前です。データベース内のファイルのドキュメントを表示するには、findクエリを使用できます-

>db.fs.files.find()

上記のコマンドは以下のドキュメントを返しました-

{
   _id: ObjectId('534a811bf8b4aa4d33fdf94d'), 
   filename: "song.mp3" 
   chunkSize: 261120, 
   uploadDate: new Date(1397391643474), md5: "e4f53379c909f7bed2e9d631e15c1c41"
   length: 10401959 
}

以下のコードを使用して、前のクエリで返されたドキュメントIDを使用してfs.chunksコレクション内でストレージファイルに関連するすべてのブロックを表示することができます:

>db.fs.chunks.find({files_id:ObjectId('534a811bf8b4aa4d33fdf94d')}

私にとって、このクエリは以下を返しました40ドキュメント、これはすべてのmp3ドキュメントは以下のように分けられました40データブロック。