MongoDB::getCollectionNames

(PECL mongo >=1.3.0)

MongoDB::getCollectionNamesこのデータベースのすべてのコレクション名の配列を取得する

説明

public MongoDB::getCollectionNames ([ array $options = array() ] ) : array

指定したデータベースのすべてのコレクションのリストを取得し、その名前を文字列の配列で返します。

注意: このメソッドは、MongoDB 2.8 以降と通信する際に、データベースコマンド » listCollections を利用します。以前のバージョンのデータベースの場合は、特別なコレクション system.namespaces を問い合わせます。

パラメータ

options

コレクションの一覧を取得する際のオプションの配列。現在利用可能なオプションは、以下のとおりです。

  • "filter"

    オプションの問い合わせ条件。これを指定すると、結果に含まれるコレクションをその条件でフィルタリングします。

    問い合わせの対象となる関連フィールドには、"name" (コレクション名を表す文字列。データベース名のプレフィックスは含まない) や "options" (コレクションを作成するために用いるオプションを含むオブジェクト) があります。

    注意: MongoDB 2.6 以前のバージョンでは、"name" の条件指定には文字列しか使えませんでした (一致する文字列だけに絞り込むなど)。これは、ドライバが system.namespaces コレクションに問い合わせるときに、その値をデータベース名の先頭に付加する必要があったからです。最新版の MongoDB にはこの制約がなくなりました。listCollections コマンドを使うようになったからです。

  • "includeSystemCollections"

    Boolean で、デフォルトは FALSE です。system コレクションを結果に含めるかどうかを指定します。

以下のオプションは、MongoDB 2.8 以降で利用可能です。

  • "maxTimeMS"

    サーバー上で操作を行う累積時間の制限 (アイドル時間を含まない) を、ミリ秒単位で指定します。この時間内にサーバー側の操作が完了しなければ、MongoExecutionTimeoutException をスローします。

返り値

コレクションの名前を文字列の配列で返します。

エラー / 例外

MongoDB 2.6 およびそれ以前のバージョンでは、 "filter" オプションの "name" に文字列以外の値を指定した場合に MongoException をスローします。

変更履歴

バージョン 説明
1.6.0 最初のパラメータがオプションの配列に変わりました。以前のバージョンでは最初のパラメータは boolean で、 "includeSystemCollections" オプションの値を指定するものでした。

例1 MongoDB::getCollectionNames() の例

<?php
$m 
= new MongoClient();
$db $m->selectDB("demo");
$collections $db->getCollectionNames();

foreach (
$collections as $collectionName) {
    echo 
"Found collection: "$collectionName"\n";
}
?>

上の例の出力は、 たとえば以下のようになります。

...
Found collection: img
Found collection: beer
Found collection: collation
...

参考