Hello, I am resending this hoping someone has some insight... Please let me know if I can clarify my question in any way.
Thank you in advance, Go ---------- Forwarded message ---------- From: Go Hori <[email protected]> Date: Tue, Oct 11, 2011 at 8:45 AM Subject: Emulating S3 path convention To: [email protected] Hi, I see a few references to implementing S3 like naming convention in which an id contains a delimiter and an application can emulate directory lookup using 'prefix' and 'delimiter' search parameters. Has anyone done something like this with couch? http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?ListingKeysHierarchy.html I have implemented a view with a map function that breaks down a path and using startkey/endkey, I can get a list of ALL documents for a given prefix. That was pretty straight forward, but now I am stuck trying to figure out how to support 'delimiter' part. To start, I am planning on a fix delimiter '/'. So, please let me illustrate: Let's assume we have five documents with following ids: /beer/japan/asahi /beer/japan/kirin /beer/usa/oregon/rouge/deadguyale /beer/usa/washingon/pikeplace/ipa /sake/usa/california/gekkeikan /beer (without a trailing slash) /sake (without a trailing slash) My mapper emits (key : value) for the first doc ---------------------- '/' : 'beer/' '/beer/' : 'japan/' '/beer/japan/' : 'asahi' for the second doc --------------------------- '/' : 'beer/' '/beer/' : 'japan/' '/beer/japan' : 'kirin' for the last doc ---------------------- '/' : 'sake' So, If I do startkey="/beer/"&endkey="/beer/", I get {"id":"/beer/japan/asahi","key":"/beer/","value":"japan/"}, {"id":"/beer/japan/kirin","key":"/beer/","value":"japan/"}, {"id":"/beer/usa/oregon/rouge/deadguyale","key":"/beer/","value":"usa/"}, {"id":"/beer/usa/washington/pikeplace/ipa","key":"/beer/","value":"usa/"} This makes sense. I am getting all documents that contains a key "/beer/". Now, with prefix & delimiter search, I'd like to return a list of direct descendant of a path being searched without duplicates. So, I want to return something like "/beer/" => ["japan/", "usa/"]. Then, I can iterate through this list and traverse down a tree. It feels like I should be able to reduce a map result down so that it'll do what I want, but I am very much stuck..I tried to reduce map results down to a list of unique values, but I cannot figure out how to restrict the search so that it does what I want. Any help will be greatly appreciated. Thanks, Go
