(PECL mongo >=0.9.0)
MongoCollection::deleteIndex — コレクションからインデックスを削除する
$keys
) : arrayこのメソッドは、以下と同等です。
<?php
public 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));
?>