couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Karl Seguin <>
Subject noobie questions
Date Mon, 24 Oct 2011 06:28:05 GMT
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,

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