Skip to content

Latest commit

 

History

History
98 lines (70 loc) · 3.94 KB

view-query-interface.markdown

File metadata and controls

98 lines (70 loc) · 3.94 KB

View/Query Interface

Couchbase Enterprise 2.0 Server combines the speed and flexibility of Couchbase databases with the powerful JSON document database technology of CouchDB into a new product that is easy to use and provides powerful query capabilities such as map-reduce. With Couchbase Server 2.0 you are able to keep using all of the Couchbase code you already have, and upgrade certain parts of it to use JSON documents without any hassles. In doing this, you can easily add the power of Views and querying those views to your applications.

For more information on Views, how they operate, and how to write effective map/reduce queries, see Couchbase Server 2.0: Views and Couchbase Sever 2.0: Writing Views.

The libcouchbase API provides direct access to Couchbase Views, while abstracting away the details about where in the cluster the views are to be executed. It is callback oriented and allows the caller to handle data streamed back from the Couchbase cluster in HTTP chunked encoding. The entry point to the libcouchbase view API is through the libcouchbase_make_couch_request() function.

For example, to range query a view looking for all keys starting with "I" through "j", one would execute a query similar to the following:

const char path[] = "myview?startkey=I,endkey=j";
libcouchbase_make_couch_request(instance, NULL, path, npath
                                NULL, 0, LIBCOUCHBASE_HTTP_METHOD_GET, 1);

This is derived from the libcouchbase interface:

libcouchbase_couch_request_t libcouchbase_make_couch_request(libcouchbase_t instance,
                                                                const void *command_cookie,
                                                                const char *path,
                                                                libcouchbase_size_t npath,
                                                                const void *body,
                                                                libcouchbase_size_t nbody,
                                                                libcouchbase_http_method_t method,
                                                                int chunked,
                                                                libcouchbase_error_t *error);

Where:

  • instance

    is the handle to the libcouchbase instance.

  • commandCookie

    is a cookie passed to all of the notifications from this command.

  • path

    is a literal view path with optional query parameters as specified in the Couchbase Views guide. Note that these arguments must be JSON encoded by the caller.

  • body

    is the POST body for a Couchbase viwe request. If the body argument is NULL, the function will use the GET request.

  • nbody

    is the size of the body argument.

  • method

    is the HTTP method type to be sent to the server. Most often this will be LIBCOUCHBASE_HTTPMETHOD_GET. LIBCOUCHBASE_HTTPMETHOD_PUT and LIBCOUCHBASE_HTTPMETHOD_DELETE may sometimes be used when working with design documents.

  • chunked

    if true, will configure the client to use the libcouchbas_couch_data_callback to notify the program of any responses. If it is false, the libcouchbase_couch_complete callback will be called upon completion.

  • error

    is a pointer to the error return value as defined in the interface. Additional information about the error condition may be retrieved through the libcouchbase_strerror() function.

For additional usage on this API, please refer to the examples in the source code repository at Couchbase Sever 2.0: Writing Views