PHP 8.0.6 Released!

MongoCollection::deleteIndex

(PECL mongo >=0.9.0)

MongoCollection::deleteIndexУдаляет индекс из коллекции

Описание

public MongoCollection::deleteIndex ( string|array $keys ) : array

Этот метод идентичен:

<?php

public function deleteIndexes($keys) {
  
$indexName $this->toIndexString($keys);

  return 
$this->db->command(array(
    
"deleteIndexes" => $this->getName(),
    
"index" => $indexName,
  ));
}

?>

Каждому индексу присваивается уникальное имя при его создании. Это часто генерируется драйвером на основе ключа(ей) индекса и порядка/типа, но пользовательские имена также могут быть указаны с помощью опции "name" MongoCollection::createIndex().

К сожалению, MongoCollection::deleteIndex() не может удалить пользовательские индексы из-за проблемы обратной совместимости. Когда предоставляется строковый аргумент, предполагается, что это имя одного поля в возрастающем индексе (например, имя "x_1" будет использоваться для аргумента "x"). Если указан массив или объект, имя индекса генерируется так же, как если бы этот аргумент был передан MongoCollection::createIndex().

Чтобы удалить индекс с пользовательским именем с помощью драйвера PHP, необходимо использовать команду базы данных 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));

?>

Смотрите также

add a note add a note

User Contributed Notes 1 note

up
-2
nanhe dot kumar at gmail dot com
7 years ago
<?php
/*
How can delete Index through Index name.
*/
function deleteIndex($db, $collection, $indexName) {
    if (
class_exists("MongoClient")) {
       
$m = new MongoClient();
    } else {
       
$m = new Mongo();
    }
   
$indexes = $m->{$db}->{$collection}->getIndexInfo();
    foreach (
$indexes as $index) {
        if (
$index['name'] === $indexName) {
            return
$m->{$db}->command(array("deleteIndexes" => $this->m->{$db}->{$collection}->getName(), "index" =>$index['key']));
            break;
        }
    }
    return
false;
}   
   
$response=deleteIndex('student','class','roll');
    echo
"<pre>;
    print_r(
$response);
    echo "
</pre>";

?>

Array
(
    [nIndexesWas] => 2
    [ok] => 1
)
To Top