List functions combined with a view would handle ranges. 

A more in depth explanation of what you are trying to do would aid the 
community in helping. 

>From what little I've seen. My gut says you're using either a poor map design, 
>poor document design, or a combination of the two. 

Views take a long time to build on big collections - especially if you're 
enumerating many keys on a document. But once built they don't get rebuilt 
unless you change the map/reduce functions. Another thing - be sure you have 
couchdb logging at warn or higher. The default info causes a ton of io chatter, 
which slows indexing. I'm in a similar scenario w/ millions of docs - it was 
taking sometimes 24 hours or more to index with the default log level. After 
raising it to warn, indexing took less than half that time. 

When comparing to relational db's, I like to think of my map function as my 
WHERE clause, and then combine that with arrays for keys to filter subsets of 
the range. Your docs basically need to be like 1st normal form; complete 
structures that you can basically apply a filter (map function) to determine 
joins and essential data values you need. 

On Dec 10, 2011, at 9:02 PM, jack chrispoo <[email protected]> wrote:

> Thanks Jim, I took a look at show function and it seems to work on single
> document. And now my question is: is there a way to range query a show
> function using startkey and limit parameters like querying a view?
> 
> Thanks,
> 
> On Fri, Dec 9, 2011 at 8:05 PM, Jim Klo <[email protected]> wrote:
> 
>> if you know the document ID that you're after, then a show function can
>> handle what you're asking without a view:
>> 
>> http://guide.couchdb.org/draft/show.html
>> 
>> 
>> Jim Klo
>> Senior Software Engineer
>> Center for Software Engineering
>> SRI International
>> 
>> 
>> 
>> 
>> On Dec 9, 2011, at 4:10 PM, jack chrispoo wrote:
>> 
>>> Hi all,
>>> 
>>> I am new to CouchDB and I have a question about getting data in
>> documents.
>>> I have documents like below:
>>> 
>>> {
>>>  "field1":"value1",
>>>  "field2":"value2",
>>>  ....
>>> }
>>> 
>>> The documents have a lot of fields and in one case I only want to get
>>> field1 from the documents. I'm wondering if there is a way to avoid
>> getting
>>> the entire document from CouchDB server because this involves a lot of
>>> unnecessary data transmission over the network? I tried creating a view
>>> which emits (doc._id,{"field1": doc.fleid1}), but indexing the view takes
>>> really long, and it doesn't seem to improve the performance. So I'm
>> curious
>>> if there is an easier way to get only a field out of a document.
>>> 
>>> Thanks
>>> 
>>> jack
>> 
>> 

Reply via email to