{% include anchor.html edit="true" title="Delete index" hash="delete_index" %}

{% highlight js %}
db.deleteIndex(index [, callback])
{% endhighlight %}

Delete an index, remove any orphaned design documents, and clean up any leftover data on disk.

{% include alert/start.html variant="info"%}
{% markdown %}

**pouchdb-find plugin needed:** This API requires the `pouchdb-find` plugin. See
[Mango queries](/guides/mango-queries.html) for installation instructions.

{% endmarkdown %}
{% include alert/end.html%}


#### Example Usage:

{% include code/start.html id="delete_idx" type="callback" %}
{% highlight js %}
db.deleteIndex({
  "ddoc": "_design/idx-0f3a6f73110868266fa5c688caf8acd3",
  "name": "idx-0f3a6f73110868266fa5c688caf8acd3",
  "type": "json",
  "def": {
    "fields": [
      { "foo": "asc" },
      { "bar": "asc" }
    ]
  }
}, function (err, result) {
  if (err) { return console.log(err); }
  // handle result
});
{% endhighlight %}
{% include code/end.html %}

{% include code/start.html id="delete_idx" type="async" %}
{% highlight js %}
try {
  const result = await db.deleteIndex({
    "ddoc": "_design/idx-0f3a6f73110868266fa5c688caf8acd3",
    "name": "idx-0f3a6f73110868266fa5c688caf8acd3",
    "type": "json",
    "def": {
      "fields": [
        { "foo": "asc" },
        { "bar": "asc" }
      ]
    }
  });
} catch (err) {
  console.log(err);
}
{% endhighlight %}
{% include code/end.html %}

{% include code/start.html id="delete_idx" type="promise" %}
{% highlight js %}
db.deleteIndex({
  "ddoc": "_design/idx-0f3a6f73110868266fa5c688caf8acd3",
  "name": "idx-0f3a6f73110868266fa5c688caf8acd3",
  "type": "json",
  "def": {
    "fields": [
      { "foo": "asc" },
      { "bar": "asc" }
    ]
  }
}).then(function (result) {
  // handle result
}).catch(function (err) {
  console.log(err);
});
{% endhighlight %}
{% include code/end.html %}

#### Example Response:

{% highlight js %}
{ "ok": true }
{% endhighlight %}

Note that the easiest way to do this is to locate the index you want to delete using [`getIndexes()`](#list_indexes).
For instance, here is how you would delete the second index from that list (which should be the
one after the built-in `_all_docs` index):

{% include code/start.html id="delete_idx2" type="callback" %}
{% highlight js %}
db.getIndexes(function (err, indexesResult) {
  if (err) { return console.log(err); }
  db.deleteIndex(indexesResult.indexes[1], function (err, result) {
    if (err) { return console.log(err); }
    // handle result
  });
});
{% endhighlight %}
{% include code/end.html %}

{% include code/start.html id="delete_idx2" type="async" %}
{% highlight js %}
try {
  const indexesResult = await db.getIndexes();
  const result = await db.deleteIndex(indexesResult.indexes[1]);
} catch (err) {
  console.log(err);
}
{% endhighlight %}
{% include code/end.html %}

{% include code/start.html id="delete_idx2" type="promise" %}
{% highlight js %}
db.getIndexes().then(function (indexesResult) {
  return db.deleteIndex(indexesResult.indexes[1]);
}).then(function (result) {
  // handle result
}).catch(function (err) {
  console.log(err);
});
{% endhighlight %}
{% include code/end.html %}

**Notes:**

* You don't need to provide a `_rev` when deleting an index.
* The associated design doc is automatically deleted, assuming it only contains one index.
* There is no need to call [`viewCleanup`](#view_cleanup) to clean up any leftover data. `deleteIndex()` does this automatically for you.
