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