MongoCollection::deleteIndex
(PECL mongo >=0.9.0)
MongoCollection::deleteIndex — コレクションからインデックスを削除する
説明
public MongoCollection::deleteIndex
( string|array $keys
) : array
このメソッドは、以下と同等です。
<?phppublic function deleteIndexes($keys) { $indexName = $this->toIndexString($keys); return $this->db->command(array( "deleteIndexes" => $this->getName(), "index" => $indexName, ));}?>
インデックスの作成時に、一意な名前が与えられます。この名前は一般に、
キーの名前や方向の組み合わせからドライバが自動生成します。しかし自分で名前をつけることも可能で、
その場合は MongoCollection::createIndex() の
"name"
オプションを利用します。
残念ながら、MongoCollection::deleteIndex() は、
独自に名前を設定したインデックスを削除できません。過去のバージョンとの互換性の問題があるからです。
文字列を指定した場合はフィールド名とみなされ、そのフィールドの昇順と解釈されます。
つまり、引数が "x"
だった場合は "x_1"
という名前を利用します。
配列やオブジェクトを指定した場合は、
MongoCollection::createIndex() に同じものを渡した場合と同様にして名前を生成します。
自分で名前を設定したインデックスを削除するには、
データベースコマンド deleteIndexes
を使う必要があります。
たとえば、"myIndex" というインデックスを PHP ドライバで削除するには、次のようにします。
<?php$db->command(array( "deleteIndexes" => $collection->getName(), "index" => "myIndex",));?>
PHP ドライバで使うインデックスの名前を調べるには、データベースの
system.indexes
コレクションを検索して、結果の
"name"
フィールドを調べます。
"ns"
フィールドは、そのインデックスが属するコレクションを表します。
パラメータ
keys
インデックスのフィールドをキーとする配列。 各フィールドの値は、インデックスの方向あるいは » インデックスの型 を表します。 方向を指定する場合は、
1
が昇順で-1
が降順を表します。文字列を指定した場合はフィールド名とみなされ、そのフィールドの昇順と解釈されます。
返り値
データベースからの応答を返します。
例
例1 MongoCollection::deleteIndex() の例
この例は、文字列パラメータおよび配列パラメータを関数に渡します。
<?php$m = new MongoClient();$c = $m->example->indices;// シンプルなインデックスを作成し、削除します$c->createIndex(array("i"=>1));$c->deleteIndex("i");// 複数キーのインデックスを作成し、削除します$c->ensureIndex(array("j" => 1, "k" => 1));$c->deleteIndex(array("j" => 1, "k" => 1));?>
参考
- MongoCollection::createIndex() - Creates an index on the specified field(s) if it does not already exist
- MongoCollection::deleteIndexes() - コレクションのすべてのインデックスを削除する
- MongoCollection::toIndexString() - インデックスを指定するキーを、インデックスを指す文字列に変換する
- MongoDB コアドキュメントの » index および » index type