{% include anchor.html edit="true" title="Delete a document" hash="delete_document"%}

{% highlight js %}
db.remove(doc, [options], [callback])
{% endhighlight %}

Or:

{% highlight js %}
db.remove(docId, docRev, [options], [callback])
{% endhighlight %}


Deletes the document. `doc` is required to be a document with at least an `_id` and a `_rev` property. Sending the full document will work as well.

See [filtered replication]({{ site.baseurl }}/api.html#filtered-replication) for why you might want to use `put()` with `{_deleted: true}` instead.

#### Example Usage:

{% include code/start.html id="delete_doc" type="callback" %}
{% highlight js %}
db.get('mydoc', function(err, doc) {
  if (err) { return console.log(err); }
  db.remove(doc, function(err, response) {
    if (err) { return console.log(err); }
    // handle response
  });
});
{% endhighlight %}
{% include code/end.html %}

{% include code/start.html id="delete_doc" type="async" %}
{% highlight js %}
try {
  const doc = await db.get('mydoc');
  const response = await db.remove(doc);
} catch (err) {
  console.log(err);
}
{% endhighlight %}
{% include code/end.html %}

{% include code/start.html id="delete_doc" type="promise" %}
{% highlight js %}
db.get('mydoc').then(function(doc) {
  return db.remove(doc);
}).then(function (result) {
  // handle result
}).catch(function (err) {
  console.log(err);
});
{% endhighlight %}
{% include code/end.html %}

#### Example Response:

{% highlight js %}
{
  "ok": true,
  "id": "mydoc",
  "rev": "2-9AF304BE281790604D1D8A4B0F4C9ADB"
}
{% endhighlight %}

You can also delete a document by just providing an `id` and `rev`:

{% include code/start.html id="delete_doc3" type="callback" %}
{% highlight js %}
db.get('mydoc', function(err, doc) {
  if (err) { return console.log(err); }
  db.remove(doc._id, doc._rev, function(err, response) {
    if (err) { return console.log(err); }
    // handle response
  });
});
{% endhighlight %}
{% include code/end.html %}

{% include code/start.html id="delete_doc3" type="async" %}
{% highlight js %}
try {
  const doc = await db.get('mydoc');
  const response = await db.remove(doc._id, doc._rev);
} catch (err) {
  console.log(err);
}
{% endhighlight %}
{% include code/end.html %}

{% include code/start.html id="delete_doc3" type="promise" %}
{% highlight js %}
db.get('mydoc').then(function(doc) {
  return db.remove(doc._id, doc._rev);
}).then(function (result) {
  // handle result
}).catch(function (err) {
  console.log(err);
});
{% endhighlight %}
{% include code/end.html %}

You can also delete a document by using `put()` with `{_deleted: true}`:

{% include code/start.html id="delete_doc2" type="callback" %}
{% highlight js %}
db.get('mydoc', function(err, doc) {
  if (err) { return console.log(err); }
  doc._deleted = true;
  db.put(doc, function(err, response) {
    if (err) { return console.log(err); }
    // handle response
  });
});
{% endhighlight %}
{% include code/end.html %}

{% include code/start.html id="delete_doc2" type="async" %}
{% highlight js %}
try {
  const doc = await db.get('mydoc');
  doc._deleted = true;
  const result = await db.put(doc);
} catch (err) {
  console.log(err);
}
{% endhighlight %}
{% include code/end.html %}

{% include code/start.html id="delete_doc2" type="promise" %}
{% highlight js %}
db.get('mydoc').then(function(doc) {
  doc._deleted = true;
  return db.put(doc);
}).then(function (result) {
  // handle result
}).catch(function (err) {
  console.log(err);
});
{% endhighlight %}
{% include code/end.html %}
