Behold the power of slices!
function(doc)
{
if(doc.author) emit(doc.author, 1);
}
All docs that have Tolkien as an author:
http://127.0.0.1:5984/db_name/_view/design_doc/foo?key="Tolkien"
Obviously, s/Tolkien/Rowling/ for books by Rowling.
The more important part is this though, say you wanted all books with
authors alphabetically from Rowling to Tolkein:
http://127.0.0.1:5984/db_name/_view/design_doc/foor?startkey="Rowling"&andkey="Tolkien"
And remember, you can emit arbitrary JSON. There's a defined sort
order over the entire range of JSON. See the View collation wiki page.
HTH,
Paul Davis
On Sun, Dec 28, 2008 at 4:06 PM, Bernd Eickhoff <[email protected]> wrote:
> Hello,
>
> I am trying to get to grips with Couchdb. Though it looks very interesting,
> I just dont understand how to query Couchdb for an abitrary value, as is
> possible with sql. Imagine I had a number of very simple documents, like:
>
> {"_id":"b1","_rev":"3573740128", "book":"Potter","author":"Rowling"}
>
> and I wanted to find all books written by Mr Tolkien?
>
> I could create a view like:
>
> function(doc) { if (doc.author == "Tolkien") emit(null, doc); }
>
> and then query:
>
> http://127.0.0.1:5984/books/_view/byauthor/tolkien
>
> Is there any way to pass "Tolkien" as a variable to the view, or do I have
> to create a new view, every time I want to query for another keyword?
>
> Thanks
>
> Bernd
>