CouchDB views are very powerful as they are based on a map/reduce operation. However, these "views" are not like those in traditional relational database systems.

One common scenario is to list all items in a database of a specific type, by name. So, lets say we have set of objects in couchdb; some that have a "city" property to show what city that object is in; and others that have a "kind" property that is city. By examinging all documents with a city, or all the city objects we can get the list of cities. This will require mapping first, to output city names (the key) and the reducing = so that the items are only shown with one record

Map those to fields to the key as follows.

function(d) {
    if (d.city) emit(d.city, { _id:null });
    if (d.kind=="city") emit(d.name, { _id:d._id });
}

And reduce them, to only show the _id field like this

function (k,v,r) {
    for (var x in v) {
        ret = (v ? v : 'Beer' );
    }
    return (ret);
}