MongoCollection::deleteIndex

(PECL mongo >=0.9.0)

MongoCollection::deleteIndexElimina un índice de esta colección

Descripción

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

Este método es identico a:

<?php

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

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

?>

A cada índice se de da un nombre único cuando es creado. A menudo, es generado por el controlador basándose en la/s clave/s del índice y en el orden/tipo, aunque también se podrían especificar nombres personalizados con la opción "name" de MongoCollection::createIndex()).

Desafortunadamente, MongoCollection::deleteIndex() no puede eliminar índices con nombres personalizados por razones de retrocompatibilidada. Cuando se proporciona un argumento de tipo string, se asume que sea el nombre de campo único de un índice ascendente (p.ej., el nombre "x_1" sería utilizado para el argumento "x"). Si se proporciona un array u objeto, se generará un nombre de índice tal como si dicho argumento fuera pasado a MongoCollection::createIndex().

Para poder borrar un índice con nombre personalizado con el controlador de PHP, se debe usar el comando de base de datos deleteIndexes. Por ejemplo, un índice llamado "myIndex" podría borrarse con el controlador de PHP ejecutando:

<?php

$db
->command(array(
  
"deleteIndexes" => $collection->getName(),
  
"index" => "myIndex",
));

?>

Para determinar el nombre de un índice con el controlador de PHP, se puede consultar la colección system.indexes de una base de datos y buscar por el campo "name" cada resultado. El campo "ns" indicará la colección a la que pertenece cada índice.

Parámetros

keys

Un array que tiene como claves los campos de índice. Para cada campo, el valor es la dirección del índice o el » tipo de índice. Si se especifica la dirección, se ha de indicar 1 para ascendente o -1 para descendente.

Si se proporciona un string, se asume que sea el nombre único de campo de un índece ascendente.

Valores devueltos

Devuelve la respuesta de la base de datos.

Ejemplos

Ejemplo #1 Ejemplo de MongoCollection::deleteIndex()

Este ejemplo ilustra cómo pasar tanto un stringo como un array a la función.

<?php

$m 
= new MongoClient();
$c $m->example->indices;

// crear y eliminar un único índice
$c->createIndex(array("i"=>1));
$c->deleteIndex("i");

// crear y eliminar un índice multiclave
$c->ensureIndex(array("j" => 1"k" => 1));
$c->deleteIndex(array("j" => 1"k" => 1));

?>

Ver también

add a note add a note

User Contributed Notes 1 note

up
-2
nanhe dot kumar at gmail dot com
11 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