MongoDB::createCollection
(PECL mongo >=0.9.0)
MongoDB::createCollection — コレクションを作成する
説明
public MongoDB::createCollection
( string $name
[, array $options
] ) : MongoCollection
このメソッドを使って、固定サイズのコレクションや 特別なオプションを要するその他のコレクションを作成します。 これは、次の操作と同じ意味です。
<?php$collection = $db->command(array( "create" => $name, "capped" => $options["capped"], "size" => $options["size"], "max" => $options["max"], "autoIndexId" => $options["autoIndexId"],));?>
データベースコマンドについての詳細な情報は MongoDB::command() を参照ください。
パラメータ
name
- コレクションの名前。
options
- コレクションのオプションを含む配列。個々のオプション用の要素がこの配列に用意されており、 以下に挙げるオプション名が配列のキーになります。サポートするオプションは、 MongoDB サーバーのバージョンやストレージエンジンによって変わります。 また,ドライバーは、受け取ったオプションをすべてそのままサーバーに渡します。 現時点でサポートするオプションの一部を以下に示します。すべてのオプションの一覧は、 MongoDB コアドキュメントの » createCollection を参照ください。
capped
- コレクションが固定サイズかどうか。
size
- コレクションが固定サイズの場合にそのバイト数を指定します。
max
- コレクションが固定サイズの場合に、コレクション内に格納できる要素の最大数。
autoIndexId
- capped が
true
のときにこれをfalse
にすると、_id
フィールド上での自動的なインデックス作成を無効化できます。 MongoDB 2.2 より前のバージョンでは、autoIndexId
のデフォルト値はfalse
でした。
返り値
新しいコレクションをあらわすコレクションオブジェクトを返します。
例
例1 MongoDB::createCollection() での固定サイズコレクションの例
固定サイズのコレクションは特別な形式のコレクションで、 固定長あるいは決まった数の要素を持ちます。 コレクションがいっぱいになると、 新しい要素が追加されたときにいちばん古いものから削除されていきます。 固定サイズのコレクションは、ログ記録などのアプリケーションで有用です。 ログ用の領域をいちど確保しておけば、それが大きくなりすぎることを気にせずにすみます。
この例は、最大で 10 のドキュメントを保持する小さなログコレクションを作ります。
<?php$log = $db->createCollection( "logger", array( 'capped' => true, 'size' => 10*1024, 'max' => 10 ));for ($i = 0; $i < 100; $i++) { $log->insert(array("level" => WARN, "msg" => "sample log message #$i", "ts" => new MongoDate()));}$msgs = $log->find();foreach ($msgs as $msg) { echo $msg['msg']."\n";}?>
上の例の出力は、 たとえば以下のようになります。
sample log message #90 sample log message #91 sample log message #92 sample log message #93 sample log message #94 sample log message #95 sample log message #96 sample log message #97 sample log message #98 sample log message #99
変更履歴
バージョン | 説明 |
---|---|
PECL mongo 1.4.0 |
1.4.0 より前のバージョンでは、個々のオプションがすべてメソッドの引数になっていました。 旧バージョンのシグネチャは、次のとおりです。 public MongoDB::createCollection
( string 各オプションの意味は、先ほど
|