incubator-couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Paul Davis" <paul.joseph.da...@gmail.com>
Subject Re: drill into a doc with a GET?
Date Thu, 08 Jan 2009 03:32:32 GMT
On Wed, Jan 7, 2009 at 4:59 PM, Robert Koberg <rob@koberg.com> wrote:
>
> On Jan 7, 2009, at 9:24 PM, Paul Davis wrote:
>
>> Robert,
>>
>> The function you're describing doesn't exist, but the end result does.
>> This would be done using a view to get only parts of a document that
>> are interesting to the calling code. Its not automatic by any means,
>> but you could write a view that would give you something similar:
>>
>> function(doc)
>> {
>>   for(var field in doc)
>>  {
>>      emit([field, doc._id], doc[field]);
>>  }
>> }
>>
>> Then to access a specific property:
>>
>> http://127.0.0.1:5984/db_name/_view/view_name/by_property?key=["foo",
>> "docid1"]
>
> OK, that is what I thought. Seems extremely inefficient (but what do I know
> :) ) since I know the exact document and path to the property. It seems like
> I would need to create unknown numbers of views to handle these types of
> lookups while going through all docs in a DB each time.
>

Rob,

Remember that views are (theoretically) calculated once per doc. So
the lookups would be extremely fast once the view is built.

I haven't a good way to explain this yet, but remember that a clever
view strategy can answer multiple query types. Try not to think of a
view as a single select statement.  I really hate comparing things
back to SQL, but you should think of a view as being able to answer a
class of selects that have different values in a where clause.

HTH,
Paul

> thanks,
> -Rob
>
>
>>
>>
>> HTH,
>> Paul Davis
>>
>> On Wed, Jan 7, 2009 at 4:18 PM, Robert Koberg <rob@koberg.com> wrote:
>>>
>>> Hi,
>>>
>>> first, couchdb is just beautiful! :) (using 0.8.1-incubating from
>>> MacPorts)
>>>
>>> I am very new, and have read the available docs and several blog posts.
>>>
>>> Can you drill into a doc with a simple GET?
>>>
>>> Say I have a doc like:
>>>
>>> {"_id": "a", "_rev": "123", "foo":{"bar": 1}, "big-ass-prop": "huge
>>> amount
>>> of stuff"}
>>>
>>> Ideally I would like to be able to call something like:
>>>
>>> http://127.0.0.1:5984/mydb/a/foo
>>>
>>> to return {"bar":1} and avoid downloading "big-ass-prop"
>>>
>>> Is this or something like it possible?
>>>
>>> (I realize "foo" is a 'sibling' of the _id in the document, but it is
>>> probably treated more like a parent in the DB?)
>>>
>>> If not possible, is it possible to create some kind of default
>>> action/filter/? that does something like the above? That is, reads the
>>> request uri, recognizes it is a document and that there is extra path
>>> info
>>> which should be used to resolve a property.
>>>
>>> thanks,
>>> -Rob
>>>
>
>

Mime
View raw message