On Wed, Jan 7, 2009 at 4:59 PM, Robert Koberg <[email protected]> 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 <[email protected]> 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 >>> > >
