incubator-couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Johannes J. Schmidt" <>
Subject Re: noobie questions
Date Mon, 24 Oct 2011 07:47:20 GMT
Hi Karl,

regarding your question to update a specific part of a document you
might want to read

g jo
Am Montag, den 24.10.2011, 14:28 +0800 schrieb Karl Seguin:
> Hi,
> I'm just starting to learn CouchDB and I've accumulated four questions.
> First, I only found some vague references, but are views only updated on
> read request? (assuming there's something to update). There's no built-in
> mechanism to have views updated in the background say for every X
> changed/new documents or X seconds?
> Secondly, it seems like if you want to update a document, you need to send
> the complete document over. I understand that, given CouchDB's versioning,
> this makes sense. In theory, would it be possible for CouchDB to expose an
> API to allow updates to specific fields, then on the backend, it would clone
> the document and overwrite the field.  Again, I know that isn't possible
> with the current API, I'm just wondering if there's anything that would stop
> that from working. You'd essentially send over the doc_id, rev, the field
> name and the new value.
> Third, any bulk update or delete needs to be done in code by loop through
> the result of a view? Say, I want to delete all the posts older than 1 year.
> I create  view keyed by the post date, I query the view with my specific
> filter, and then I loop through it deleting each document? It's pretty much
> the same story for updates, but I can use the bulk update api. There's no
> direct analog to delete from posts where date < ?, it's more of a select id
> from posts where date < ? then delete those ids. Right?
> Forth, and I'm sorry for asking this, I realize it's asked a lot, but I
> couldnt' figure it out despite that...I'm trying to retrieve all of the
> posts with a specific tag, sorted by date. My view looks like:
> function(doc) {
>   if (doc.doc_type != 'post') { return; }
>   for(var tag in doc.tags) {
>     emit([doc.dated, doc.tags[tag]], null);
>   }
> }
> I was hoping that a query like this might work:
> for row in db.view('application/post_by_tags', key='[{}, "blah"]'):
>   print row
> But it doesn't.
> Thanks for the help,
> Karl

View raw message