Php/docs/mongocollection.deleteindex

提供:Dev Guides
< Php
移動先:案内検索

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));?>

参考