MapReduce Views Using the C SDK with Couchbase Server

    You can use MapReduce views to create queryable indexes in Couchbase Data Platform.

    The normal CRUD methods allow you to look up a document by its ID. A MapReduce (view query) allows you to lookup one or more documents based on various criteria. MapReduce views are comprised of a map function that is executed once per document (this is done incrementally, so this is not run each time you query the view) and an optional reduce function that performs aggregation on the results of the map function. The map and reduce functions are stored on the server and written in JavaScript.

    MapReduce queries can be further customized during query time to allow only a subset (or range) of the data to be returned.

    See the Incremental MapReduce Views and Querying Data with Views sections of the general documentation to learn more about views and their architecture.

    You can find further information in the API docs.

    Querying Views

    View operations are accessible via lcb_CMDVIEW. Once you have a reference to the bucket you need to at least supply the name of the design document and the name of the view:

    lcb_CMDVIEW *vq;
    std::string dName = "beer";
    std::string vName = "by_location";
    std::string options = "reduce=false";
    lcb_cmdview_callback(vq, viewCallback);
    lcb_cmdview_design_document(vq, dName.c_str(), dName.size());
    lcb_cmdview_view_name(vq, vName.c_str(), vName.size());
    lcb_cmdview_option_string(vq, options.c_str(), options.size());
    lcb_cmdview_include_docs(vq, true);