couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "paul jobs" <webjog...@gmail.com>
Subject Re: select where
Date Wed, 07 Jan 2009 08:03:42 GMT
function(d) {
if (d.type!="reply")
emit([d.fromuid,d.touid,d.replycount],d);
}

is it possible to use this map function
to prepare views

like fromuid ==uid or touid ==uid and d.replycount>0 using couchdb view keys

On 1/6/09, paul jobs <webjogger@gmail.com> wrote:
>
> Nanodeath on couchdb irc solved this ->
> function(d){
>   if(d.type != 'reply'){
>     emit(d.touid, d);
>     if(d.touid != d.fromuid){
>       if (d.replycount>0)
>       emit(d.fromuid, d);
>     }
>   }
> }
>
>
>
> Usage: In [7]: replies = [ (x.id, x.value) for x in
> anondb.view('_view/truthbox/inbox',key=z.uid) ]
>
> Schema:
>
> class Anonmessage(Document):
>     subject = TextField()
>     read = BooleanField()
>     fromread = BooleanField()
>     toread = BooleanField()
>     msg = TextField()
>     background = TextField()
>     type = TextField()
>     reply = TextField()
>     fromuid = LongField()
>     replycount = IntegerField()
>     touid = LongField()
>     created = DateTimeField(default=datetime.datetime.now())
>     time =TimeField(default=datetime.datetime.now())
>     date = DateField(default=datetime.date.today())
>
>
>
>
>
> On 1/6/09, paul jobs <webjogger@gmail.com> wrote:
>>
>> querycode  = 'function(d) { if ((d.touid == "%d" || d.fromuid=="%d") &&
>> d.type!="reply" ) emit(d.created,d); }'%(uid, uid)
>> anonmsgs = [ (x.id,x.value) for x in varnishanondb.query(querycode,
>> descending=True) ]
>>
>> how to use this using slices -> when there are 2 variables in the query
>> instead of just d.author
>>
>> On 12/28/08, Paul Davis <paul.joseph.davis@gmail.com> wrote:
>>>
>>> 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 <me@mymonster.net>
>>> 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
>>> >
>>>
>>
>>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message