Docs Menu
Docs Home
/ / /
Lambda MongoDB

GridFS ファイルシステム

GridFS用の GridFS アダプター を使用して、 MongoDBに大容量のファイルを保存できます。GridFSを使用すると、データと同じデータベースに無制限サイズのファイルを保存できます。

GridFS ドライバーを使用する前に、次のコマンドを実行して、Composer パッケージ マネージャーを介して Flysystem GridFS パッケージをインストールします。

composer require league/flysystem-gridfs

Lambda ファイル ストレージの 構成 gridfsconfig/filesystems.php ドライバーを使用するには:

'disks' => [
'gridfs' => [
'driver' => 'gridfs',
'connection' => 'mongodb',
// 'database' => null,
// 'bucket' => 'fs',
// 'prefix' => '',
// 'read-only' => false,
// 'throw' => false,
],
],

config/filesystems.phpでは次の設定を構成できます。

設定
説明
driver
必須。 使用するファイルシステム ドライバーを指定します。 MongoDB ではgridfsである必要があります。
connection
ジョブを保存するために使用されるデータベース接続。 mongodb接続である必要があります。 接続が指定されていない場合、ドライバーはデフォルトの接続を使用します。
database
GridFS バケット用の MongoDB database の名前。 データベースが指定されていない場合、ドライバーは接続のデータベースを使用します。
bucket
GridFS バケットの名前またはインスタンス。 データベースには、名前で識別される複数のバケットを含めることができます。 デフォルトはfsです。
prefix
バケットに保存されるファイルの名前のプレフィックスを指定します。 ファイルを別のコレクションに保存するには、プレフィックスを使用する代わりに、個別のバケットを使用することをお勧めします。 プレフィックスは、先頭にスラッシュ( / )で始まってはなりません。
read-only
trueの場合、GridFS バケットへの書込みは無効になります。 書き込み操作は、 throwの構成に応じてfalseを返すか、例外をスローします。 デフォルトはfalseです。
throw
trueの場合、操作を実行できない場合に例外がスローされます。 falseの場合、
操作は、成功した場合はtrueを返し、エラーの場合はfalseを返します。 デフォルトはfalseです。

ファクトリーまたはサービス名を使用してMongoDB\GridFS\Bucketのインスタンスを作成することもできます。 この場合、オプションconnectiondatabaseは無視されます。

use Illuminate\Foundation\Application;
use MongoDB\GridFS\Bucket;
'disks' => [
'gridfs' => [
'driver' => 'gridfs',
'bucket' => static function (Application $app): Bucket {
return $app['db']->connection('mongodb')
->getMongoDB()
->selectGridFSBucket([
'bucketName' => 'avatars',
'chunkSizeBytes' => 261120,
]);
},
],
],

Lambda ファイルシステムは、サポートされているすべてのファイルシステムに共通のインターフェースを提供します。 gridfsディスクはlocalディスクと同じ方法で使用できます。

次の例では、ファイルをgridfsディスクに書き込み、そのファイルを読み取ります。

$disk = Storage::disk('gridfs');
// Write the file "hello.txt" into GridFS
$disk->put('hello.txt', 'Hello World!');
// Read the file
echo $disk->get('hello.txt'); // Hello World!

Lalavel ファイル ストレージの詳細については、「 Lambel ファイル ストレージ 」を参照してください。 Lambda のドキュメント。

GridFS はアップロードされたファイルごとにファイル ドキュメントを作成します。 これらのドキュメントには、ファイル名や一意の ObjectId などのメタデータが含まれています。 複数のドキュメントが同じファイル名を共有する場合、それらは「リビジョニング」と見なされ、作成タイムスタンプによってさらに区別されます。

Lambda MongoDB 統合では GridFS Flysystem アダプターが使用されます。 ファイルの変更を次の方法でやり取りします。

  • ファイルを読み取ると、このファイル名の最後の改訂版が読み取られます

  • ファイルを書き込むと、このファイル名に新しいリレーションが作成されます

  • ファイルの名前を変更すると、このファイル名のすべての改訂版の名前が変更されます

  • ファイルを削除すると、このファイル名のすべての改訂版が削除されます

Flysystem 用の GridFS アダプターは、ファイル名の特定のリビルドへのアクセスを提供していません。 次のコードに示すように、リダイレクトを操作する必要がある場合は、 GridFS APIを使用する必要があります。

// Create a bucket service from the MongoDB connection
/** @var \MongoDB\GridFS\Bucket $bucket */
$bucket = $app['db']->connection('mongodb')->getMongoDB()->selectGridFSBucket();
// Download the last but one version of a file
$bucket->openDownloadStreamByName('hello.txt', ['revision' => -2])

注意

prefixファイルシステム設定を指定する場合、GridFS API を直接使用する際は、ファイル名を明示的に前に追加する必要があります。

戻る

トランザクション