GridFS クラス群目次
MongoGridFS クラスはじめにデータベースにファイルを格納したり、データベースからファイルを取得したりするためのユーティリティです。 GridFS はストレージの仕様で、すべてのドライバがこれを実装しています。 基本的に、これはふたつのコレクションを定義しています。 ファイルのメタデータ用の files、 そしてファイルの中身用の chunks です。 大きなファイルの場合は自動的に小さなチャンクに分割し、 各チャンクが chunks コレクションのドキュメントとして保存されます。 files コレクション内の各ドキュメントには、ファイル名とアップロードした日付、 そして md5 ハッシュが含まれています。 また、一意な _id フィールドも持っており、 これを使ってそのファイルの中身がある chunks コレクションを探すことができます。 chunks コレクション内の各ドキュメントには、バイナリデータのチャンクの他に そのファイルの _id フィールドにマッチする files_id フィールドが含まれ、さらに ファイル全体の中でそのチャンクがどの位置にあるのかという情報も含まれます。 files ドキュメントの内容は、たとえばこのようになります。
<?php
<?php 言語間の互換性MongoGridFS で作ったファイルは他のどのドライバでも使えなければなりませんし、 逆もまたそうです。しかし中には、ファイルに関連するすべてのメタデータが "metadata" フィールドにあるという前提で動くドライバもあります。 他の言語を使う可能性があるのなら、見せたい情報を "metadata" フィールドに入れておくといいでしょう。たとえば、
<?php こう書くかわりに、下のようにするのです。
<?php MongoGridFS ファミリーMongoGridFS は files コレクションと chunks コレクションを表します。MongoGridFS は MongoCollection を継承しており、MongoGridFS のインスタンスは MongoCollection のすべてのメソッドにアクセスできます。 これは files コレクションに対する操作となります。
<?php メタデータを操作する別の例を示します。
<?php MongoGridFS のインスタンスから、 chunks コレクションにアクセスすることもできます。
<?php MongoGridFS のメソッドの中には MongoCollection のメソッドと同じ名前のものもあります。 これらのメソッドの挙動は微妙に異なります。 たとえば MongoGridFS::remove は、条件にマッチするすべてのオブジェクトを files コレクションから削除し、 対応する chunks コレクションの中身も同時に削除します。 新しい何かを GridFS に格納する際にはいくつかのオプションがあります。 ファイル名がわかる場合は、次のように書くことができます。
<?php ファイルではない文字列やバイト列の場合は、 MongoGridFS::storeBytes を使うこともできます。
<?php MongoGridFS コレクションへの問い合わせ結果として返されるのは MongoGridFSCursor です。これは通常の MongoCursor とほぼ同様の動きをしますが、連想配列ではなく MongoGridFSFiles を返すという点が異なります。 MongoGridFSFiles をディスクに書き出すには MongoGridFSFile::write を、メモリに取り込むには MongoGridFSFile::getBytes を使います。 自動的にチャンクをつなげるメソッドは今のところありませんが、 $grid->chunks コレクションに問い合わせて自分でつなげるのはきわめて簡単です。 MongoGridFSFile オブジェクトには、 ファイルのメタデータを格納する file フィールドが含まれます。 クラス概要MongoGridFS
extends
class MongoCollection
{
/* フィールド */
public
MongoCollection
$chunks
=
null
;
protected
string
$filesName
=
null
;
protected
string
$chunksName
=
null
;/* メソッド */
public __construct
( MongoDB
$db
[, string $prefix = "fs"
[, mixed $chunks = "fs"
]] )
public boolarray delete
( mixed
$id
)
public array drop
( void
)
public MongoGridFSCursor find
([ array
$query = array()
[, array $fields = array()
]] )
public MongoGridFSFile findOne
([ mixed
$query = array()
[, mixed $fields = array()
]] )
public MongoGridFSFile get
( mixed
$id
)
public mixed put
( string
$filename
[, array $metadata = array()
[, array $options = array()
]] )
public boolarray remove
([ array
$criteria = array()
[, array $options = array()
]] )
public mixed storeBytes
( string
$bytes
[, array $metadata = array()
[, array $options = array()
]] )
public mixed storeFile
( stringresource
$filename
[, array $metadata = array()
[, array $options = array()
]] )
public mixed storeUpload
( string
}$name
[, array $metadata
] )参考
MongoGridFSFile クラスはじめにデータベースファイルオブジェクト。 クラス概要MongoGridFSFile
class MongoGridFSFile
{
/* フィールド */
public
array
$file
=
null
;
protected
MongoGridFS
$gridfs
=
null
;/* メソッド */
public MongoGridfsFile::__construct
( MongoGridFS
$gridfs
, array $file
)
public string getBytes
( void
)
public string getFilename
( void
)
public resource getResource
( void
)
public int getSize
( void
)
public int write
([ string
}$filename = null
] )MongoGridFSCursor クラスはじめにデータベースからのファイル用のカーソルです。 クラス概要MongoGridFSCursor
extends
class MongoCursor
{
/* フィールド */
protected
MongoGridFS
$gridfs
=
null
;/* メソッド */
public __construct
( MongoGridFS
$gridfs
, resource $connection
, string $ns
, array $query
, array $fields
)
public MongoGridFSFile current
( void
)
public MongoGridFSFile getNext
( void
)
public string key
( void
)
} |