incubator-couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sebastian Cohnen <sebastiancoh...@googlemail.com>
Subject Re: Bulk Updates in CouchDB
Date Tue, 16 Nov 2010 10:05:33 GMT
You can update documents in batches. but in order to update them - deletion is also an update
in that case - you need to provide the document, or, in case of deletion, at least the correct
_rev token. so you would need to collect the _rev tokens and IDs of the docs you want to delete,
batch them up and send one request to the server.

On 16.11.2010, at 10:44, Neville Franks wrote:

> Thanks for the prompt response. I have to say that I am very, very
> surprised that what seems to me are such basic operations aren't
> available natively within CouchDB.
> 
> This is probably a deal breaker for my use and I would have thought
> many others. My concern is iterating over a large number of documents
> on a remote server just to do simple updates. It means I need to do
> several HTTP requests (GET/PUT/DELETE) for each document in a set of
> of possibly thousands or tens of thousands. I'm in Australia and the
> server is in the US and I would imagine this making an application
> unusable.
> 
> I am getting the feeling that CouchDB is great for storing lots of
> information and getting it back in lots of interesting ways but not a
> good fit for typical CRUD stuff that's done in SQL all the time.
> Please correct me if I'm wrong.
> 
> 
> Tuesday, November 16, 2010, 2:06:18 PM, you wrote:
> 
> k> You can't do this at the moment. At least, not that I know of.
> 
> k> For #1, my current trick is to generate a view with a map function
> k> that looks like this:
> 
> k> map: function(doc) {
> k>     emit(null, doc._rev);
> k> }
> 
> k> This makes it easy to convert the results of the view (without
> k> stale=ok) into a bulk-delete by iterating over the view, but not
> k> fetching each document to get at the revision. This does mean that the
> k> documents haven't been updated between the view-fetch and the
> k> bulk-delete. But for my use-case, this works.
> 
> k> For #2, you have to iterate over from the client side. Unless, someone
> k> else has another idea.
> 
> k> K.
> k> ---
> k> http://www.pcapr.net
> k> http://twitter.com/pcapr
> k> http://labs.mudynamics.com
> 
> k> On Mon, Nov 15, 2010 at 7:01 PM, Neville Franks <subs@surfulater.com> wrote:
>>> Hi,
>>> I am just learning about CouchDB so please excuse this nooby question.
>>> 
>>> I've read lots the past few days including
>>> http://wiki.apache.org/couchdb/HTTP_Bulk_Document_API and a fair bit
>>> of two of the online CouchDB books.
>>> 
>>> My question is how do I do some simple things like:
>>> 
>>> 1) Delete all documents where key.value = xxx
>>> 
>>> 2) Update all documents where key.value = xxx so value = yyy
>>> 
>>> I want the DB to do these, not for me to have to iterate through the
>>> DB in code. From what I've read about Views, they are read-only and
>>> therefore can't be used in update/delete operations.
>>> 
>>> I've read lots on views and CouchDB seems great at getting information
>>> out in all sorts of ways, however basic bulk update/delete operations
>>> are so far alluding me.
>>> 
>>> My main exposure to DB's at this time is using SQLite and these sorts
>>> of things are of course easy and quick to do in SQL.
>>> 
>>> Hopefully I'm missing something obvious.
>>> 
>>> ---
>>> Neville Franks,  http://www.surfulater.com
> 
> Neville Franks,  http://www.surfulater.com
> 


Mime
View raw message