(PECL mongo >=0.9.0)
MongoCollection::deleteIndex — コレクションからインデックスを削除する
このメソッドは、以下と同等です。
<?php
public function deleteIndexes($keys) {
// toIndexString は protected メソッドで、文字列や配列そしてオブジェクトを
// インデックス名に変換します
$index = $this->toIndexString($keys);
return $this->db->command(array("deleteIndexes" => $this->getName(),
"index" => $index);
}
?>
インデックスの作成時に、一意な名前が与えられます。この名前は、ユーザが設定する (MongoCollection::ensureIndex() の "name" オプション) こともあれば、キーの名前や方向の組み合わせからドライバが自動生成することもあります。 この名前を使って、MongoCollection::deleteIndex() による削除を行います。
残念ながら、MongoCollection::ensureIndex() が生成する名前はシェルで作るものとは微妙に異なります。 そして過去との互換性の問題のため、MongoCollection::deleteIndex() では自分で設定した名前のインデックスを削除できません。 シェルで作ったり自分で名前を設定したりしたインデックスを削除するいちばんの方法は、 データベースコマンド deleteIndexes を使うことになります。
"superfast query" という名前のインデックスを作った場合、それを削除するには次のようにします。
<?php
$db->command(array("deleteIndexes" => $collection->getName(), "index" => "superfast query");
?>
インデックスの名前を調べるには、データベースの system.indexes コレクションを検索して name フィールドを調べます。
インデックスを削除したいフィールド。
データベースの応答を返します。
例1 MongoCollection::deleteIndex() の例
この例は、文字列パラメータおよび配列パラメータを関数に渡します。
<?php
$m = new Mongo();
$c = $m->example->indices;
// インデックスを作成します
$c->ensureIndex(array("i"=>1));
// シンプルなインデックスを削除します
$c->deleteIndex("i");
// 複数キーのインデックスを作成します
$c->ensureIndex(array("j" => 1, "k" => 1));
// 複数キーのインデックスを削除します
$c->deleteIndex(array("j" => 1, "k" => 1));
?>