db.allDocs([options], [callback])
Fetch multiple documents, indexed and sorted by the _id. Deleted documents are only included if options.keys is specified.
Options
All options default to false unless otherwise specified.
- options.include_docs: Include the document itself in each row in the doc field. Otherwise by default you only get the _id and _rev properties.
- options.conflicts: Include conflict information in the _conflicts field of a doc.
- options.attachments: Include attachment data as base64-encoded string.
- options.binary: Return attachment data as Blobs/Buffers, instead of as base64-encoded strings.
- options.startkey & options.endkey: Get documents with IDs in a certain range (inclusive/inclusive).
- options.inclusive_end: Include documents having an ID equal to the given options.endkey. Default: true.
- options.limit: Maximum number of documents to return.
- options.skip: Number of docs to skip before returning (warning: poor performance on IndexedDB/LevelDB!).
- options.descending: Reverse the order of the output documents. Note that the order of startkey and endkey is reversed when descending:true.
- options.key: Only return documents with IDs matching this string key.
- options.keys: Array of string keys to fetch in a single shot.
- Neither startkey nor endkey can be specified with this option.
- The rows are returned in the same order as the supplied keys array.
- The row for a deleted document will have the revision ID of the deletion, and an extra key "deleted":true in the value property.
- The row for a nonexistent document will just contain an "error" property with the value "not_found".
- For details, see the CouchDB query options documentation.
- options.update_seq: Include an update_seq value indicating which sequence id of the underlying database the view reflects.
Notes: For pagination, options.limit and options.skip are also available, but the same performance concerns as in CouchDB apply. Use the startkey/endkey pattern instead.
Example Usage
Async functions
db.allDocs({
include_docs: true,
attachments: true
}).then(function (result) {
// handle result
}).catch(function (err) {
console.log(err);
);Example Response:
{
"offset": 0,
"total_rows": 1,
"rows": [{
"doc": {
"_id": "0B3358C1-BA4B-4186-8795-9024203EB7DD",
"_rev": "1-5782E71F1E4BF698FA3793D9D5A96393",
"title": "Sound and Vision",
"_attachments": {
"attachment/its-id": {
"content_type": "image/jpg",
"data": "R0lGODlhAQABAIAAAP7//wAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==",
"digest": "md5-57e396baedfe1a034590339082b9abce"
}
}
},
"id": "0B3358C1-BA4B-4186-8795-9024203EB7DD",
"key": "0B3358C1-BA4B-4186-8795-9024203EB7DD",
"value": {
"rev": "1-5782E71F1E4BF698FA3793D9D5A96393"
}
}]
}
In the response, you have three things:
You can use startkey/endkey to find all docs in a range:
db.allDocs({
include_docs: true,
attachments: true,
startkey: 'bar',
endkey: 'quux'
}).then(function (result) {
// handle result
}).catch(function (err) {
console.log(err);
});
This will return all docs with _ids between 'bar' and 'quux'.
Prefix search
You can do prefix search in allDocs() – i.e. “give me all the documents whose _ids start with 'foo'” – by using the special high Unicode character '\ufff0':
db.allDocs({
include_docs: true,
attachments: true,
startkey: 'foo',
endkey: 'foo\ufff0'
}).then(function (result) {
// handle result
}).catch(</s