Skip to content

Instantly share code, notes, and snippets.

@ermouth
Last active December 9, 2015 10:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ermouth/62fbcc2983610ecb59b2 to your computer and use it in GitHub Desktop.
Save ermouth/62fbcc2983610ecb59b2 to your computer and use it in GitHub Desktop.
CouchDB js rewrites – json_structure

JSON Structure Reference

The following appendix provides a quick reference to all the JSON structures that you can supply to CouchDB, or get in return to requests.

All Database Documents

Field Description
total_rows Number of documents in the database/view
offset Offset where the document list started
update_seq (optional) Current update sequence for the database
rows [array] Array of document object

Bulk Document Response

Field Description
docs [array] Bulk Docs Returned Documents

id

Document ID

error

Error type

reason

Error string with extended reason

Bulk Documents

Field Description
all_or_nothing (optional) Sets the database commit mode to use all-or-nothing semantics
docs [array] Bulk Documents Document

_id (optional)

Document ID

_rev (optional)

Revision ID (when updating an existing document)

_deleted (optional)

Whether the document should be deleted

Changes information for a database

Field Description
last_seq Last change sequence number
results [array] Changes made to a database

seq

Update sequence number

id

Document ID

changes [array]

List of changes, field-by-field, for this document

CouchDB Document

Field Description
_id (optional) Document ID
_rev (optional) Revision ID (when updating an existing document)

CouchDB Error Status

Field Description
id Document ID
error Error type
reason Error string with extended reason

CouchDB database information object

Field Description
db_name The name of the database.
committed_update_seq The number of committed updates.
doc_count The number of documents in the database.
doc_del_count The number of deleted documents.
compact_running Set to true if the database compaction routine is operating on this database.
disk_format_version The version of the physical format used for the data when it is stored on hard disk.
disk_size Size in bytes of the data as stored on disk. View indexes are not included in the calculation.
instance_start_time Timestamp indicating when the database was opened, expressed in microseconds since the epoch.
purge_seq The number of purge operations on the database.
update_seq The current number of updates made in the database.

Design Document

Field Description
_id Design Document ID
_rev Design Document Revision
views View

viewname

View Definition

map

Map Function for View

reduce (optional)

Reduce Function for View

Design Document Information

Field Description
name Name/ID of Design Document
view_index View Index

compact_running

Indicates whether a compaction routine is currently running on the view

disk_size

Size in bytes of the view as stored on disk

language

Language for the defined views

purge_seq

The purge sequence that has been processed

signature

MD5 signature of the views for the design document

update_seq

The update sequence of the corresponding database that has been indexed

updater_running

Indicates if the view is currently being updated

waiting_clients

Number of clients waiting on views from this design document

waiting_commit

Indicates if there are outstanding commits to the underlying database that need to processed

Document with Attachments

Field Description
_id (optional) Document ID
_rev (optional) Revision ID (when updating an existing document)
_attachments (optional) Document Attachment

filename

Attachment information

content_type

MIME Content type string

data

File attachment content, Base64 encoded

List of Active Tasks

Field Description
tasks [array] Active Tasks

pid

Process ID

status

Task status message

task

Task name

type

Operation Type

Replication Settings

Field Description
source Source database name or URL
target Target database name or URL
create_target (optional) Creates the target database
continuous (optional) Configure the replication to be continuous
cancel (optional) Cancels the replication
doc_ids (optional) Array of document IDs to be synchronized
proxy (optional) Address of a proxy server through which replication should occur
since_seq (optional) Sequence from which the replication should start
filter (optional) name of the filter function in the form of ddoc/myfilter
query_params (optional) Query parameter that are passed to the filter function; the value should be a document containing parameters as members
use_checkpoints (optional) Whether to use replication checkpoints or not
checkpoint_interval (optional) Specifies the checkpoint interval in ms.

Replication Status

Field Description
ok Replication status
session_id Unique session ID
source_last_seq Last sequence number read from the source database
history [array] Replication History

session_id

Session ID for this replication operation

recorded_seq

Last recorded sequence number

docs_read

Number of documents read

docs_written

Number of documents written to target

doc_write_failures

Number of document write failures

start_time

Date/Time replication operation started

start_last_seq

First sequence number in changes stream

end_time

Date/Time replication operation completed

end_last_seq

Last sequence number in changes stream

missing_checked

Number of missing documents checked

missing_found

Number of missing documents found

Request object

Field Description
body Request body data as string. If the request method is GET this field contains the value "undefined". If the method is DELETE or HEAD the value is "" (empty string).
cookie Cookies object.
form Form data object. Contains the decoded body as key-value pairs if the Content-Type header was application/x-www-form-urlencoded.
headers Request headers object.
id Requested document id string if it was specified or null otherwise.
info Database information <dbinfo_object>
method Request method as string or array. String value is a method as one of: HEAD, GET, POST, PUT, DELETE, OPTIONS, and TRACE. Otherwise it will be represented as an array of char codes.
path List of requested path sections.
peer Request source IP address.
query URL query parameters object. Note that multiple keys are not supported and the last key value suppresses others.
requested_path List of actual requested path section.
raw_path Raw requested path string.
secObj security_object.
userCtx userctx_object.
uuid Generated UUID by a specified algorithm in the config file.
{
    "body": "undefined",
    "cookie": {
        "AuthSession": "cm9vdDo1MDZBRjQzRjrfcuikzPRfAn-EA37FmjyfM8G8Lw",
        "m": "3234"
    },
    "form": {},
    "headers": {
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.3",
        "Accept-Encoding": "gzip,deflate,sdch",
        "Accept-Language": "en-US,en;q=0.8",
        "Connection": "keep-alive",
        "Cookie": "m=3234:t|3247:t|6493:t|6967:t|34e2:|18c3:t|2c69:t|5acb:t|ca3:t|c01:t|5e55:t|77cb:t|2a03:t|1d98:t|47ba:t|64b8:t|4a01:t; AuthSession=cm9vdDo1MDZBRjQzRjrfcuikzPRfAn-EA37FmjyfM8G8Lw",
        "Host": "127.0.0.1:5984",
        "User-Agent": "Mozilla/5.0 (Windows NT 5.2) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7"
    },
    "id": "foo",
    "info": {
        "committed_update_seq": 2701412,
        "compact_running": false,
        "data_size": 7580843252,
        "db_name": "mailbox",
        "disk_format_version": 6,
        "disk_size": 14325313673,
        "doc_count": 2262757,
        "doc_del_count": 560,
        "instance_start_time": "1347601025628957",
        "purge_seq": 0,
        "update_seq": 2701412
    },
    "method": "GET",
    "path": [
        "mailbox",
        "_design",
        "request",
        "_show",
        "dump",
        "foo"
    ],
    "peer": "127.0.0.1",
    "query": {},
    "raw_path": "/mailbox/_design/request/_show/dump/foo",
    "requested_path": [
        "mailbox",
        "_design",
        "request",
        "_show",
        "dump",
        "foo"
    ],
    "secObj": {
        "admins": {
            "names": [
                "Bob"
            ],
            "roles": []
        },
        "members": {
            "names": [
                "Mike",
                "Alice"
            ],
            "roles": []
        }
    },
    "userCtx": {
        "db": "mailbox",
        "name": "Mike",
        "roles": [
            "user"
        ]
    },
    "uuid": "3184f9d1ea934e1f81a24c71bde5c168"
}

Request2 object ==============

Field Description
body Request body data as string. If the request method is GET this field contains the value "undefined". If the method is DELETE or HEAD the value is "" (empty string).
cookie Cookies object.
headers Request headers object.
method Request method as string or array. String value is a method as one of: HEAD, GET, POST, PUT, DELETE, OPTIONS, and TRACE. Otherwise it will be represented as an array of char codes.
path List of requested path sections.
peer Request source IP address.
query URL query parameters object. Note that multiple keys are not supported and the last key value suppresses others.
requested_path List of actual requested path section.
raw_path Raw requested path string.
secObj security_object.
userCtx userctx_object.

Response object

Field Description
code HTTP status code number.
json JSON encodable object. Implicitly sets Content-Type header as application/json.
body Raw response text string. Implicitly sets Content-Type header as text/html; charset=utf-8.
base64 Base64 encoded string. Implicitly sets Content-Type header as application/binary.
headers Response headers object. Content-Type header from this object overrides any implicitly assigned one.
stop boolean signal to stop iteration over view result rows (for list functions only)

Warning

The body, base64 and json object keys are overlapping each other where the last one wins. Since most realizations of key-value objects do not preserve the key order or if they are mixed, confusing situations can occure. Try to use only one of them.

Note

Any custom property makes CouchDB raise an internal exception. Furthermore, the Response object could be a simple string value which would be implicitly wrapped into a {"body": ...} object.

Returned CouchDB Document with Detailed Revision Info

Field Description
_id (optional) Document ID
_rev (optional) Revision ID (when updating an existing document)
_revs_info [array] CouchDB document extended revision info

rev

Full revision string

status

Status of the revision

Returned CouchDB Document with Revision Info

Field Description
_id (optional) Document ID
_rev (optional) Revision ID (when updating an existing document)
_revisions CouchDB document revisions

ids [array]

Array of valid revision IDs, in reverse order (latest first)

start

Prefix number for the latest revision

Returned Document with Attachments

Field Description
_id (optional) Document ID
_rev (optional) Revision ID (when updating an existing document)
_attachments (optional) Document attachment

filename

Attachment

stub

Indicates whether the attachment is a stub

content_type

MIME Content type string

length

Length (bytes) of the attachment data

revpos

Revision where this attachment exists

Security Object

Field Description
admins Roles/Users with admin privileges

roles [array]

List of roles with parent privilege

names [array]

List of users with parent privilege
members Roles/Users with non-admin privileges

roles [array]

List of roles with parent privilege

names [array]

List of users with parent privilege
{
    "admins": {
        "names": [
            "Bob"
        ],
        "roles": []
    },
    "members": {
        "names": [
            "Mike",
            "Alice"
        ],
        "roles": []
    }
}

User Context Object

Field Description
db Database name in the context of the provided operation.
name User name.
roles List of user roles.
{
    "db": "mailbox",
    "name": null,
    "roles": [
        "_admin"
    ]
}

View Head Information

Field Description
total_rows Number of documents in the view
offset Offset where the document list started
{
    "total_rows": 42,
    "offset": 3
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment