Then simply emit the name before the day of the month. Then, it'll sort by name then day of month.
On Thu, Mar 17, 2011 at 3:17 PM, Justin Walgran <[email protected]> wrote: > Thanks for the thoughtful reply, Keith. > > Assume these input docs: > > { "inspection_date": "2011-03-01", "homeowner_name": "Bob" } > > { "inspection_date": "2011-03-02", "homeowner_name": "Keith" } > > { "inspection_date": "2011-03-03", "homeowner_name": "Alice" } > > The key output from > by_inspection_date_and_homeowner_name?reduce=false&startkey=[2011,3,0]&endkey=[2011,3,{}] > would be: > > [2011,3,1,"Bob"] > [2011,3,2,"Keith"] > [2011,3,3,"Alice"] > > Which is not sorted by home owner name. That's the gotcha. > > > Justin > > On Thu, Mar 17, 2011 at 2:13 PM, Keith Gable <[email protected]> > wrote: >> Uh. This sounds simple? >> >> view: by_home_owner_name: >> if (doc.home_owner_name) { emit(doc.home_owner_name, 1); } >> >> view: by_inspection_date: >> if (doc.inspection_date) { >> var d = new Date(doc.inspection_date); >> emit ([ d.getFullYear(), d.getMonth() + 1, d.getDate() ], 1); >> } >> >> To look for all of my inspections: >> ...by_home_owner_name?key=Keith Gable >> >> To get all of the inspections for today: >> ...by_inspection_date?reduce=false&key=[2011,3,17] >> >> To get all of the inspections for this month: >> ...by_inspection_date?reduce=false&startkey=[2011,3,0]&endkey=[2011,3,{}] >> >> >> Combining the two: >> >> view: by_inspection_date_and_homeowner_name: >> if (doc.inspection_date && doc.homeowner_name) { >> var d = new Date(doc.inspection_date); >> emit ([ d.getFullYear(), d.getMonth() + 1, d.getDate(), >> doc.homeowner_name ], 1); >> } >> >> ...by_inspection_date_and_homeowner_name?reduce=false&startkey=[2011,3,0]&endkey=[2011,3,{}] >> >> Will result in: >> [2011,3,1,"Alice"] >> [2011,3,1,"Bob"] >> [2011,3,2,"Keith"] >> >> >> Does any of that not do what you want? >> >> On Thu, Mar 17, 2011 at 12:33 PM, Justin Walgran <[email protected]> wrote: >>> Assume a CouchDB storing and indexing housing inspection records. Each >>> inspection document as two important fields. >>> >>> - Home owner name >>> - Inspection date >>> >>> There are about 15,000 inspection documents generated per month. >>> >>> I need to quickly retrieve a list of inspections for January, sorted >>> by home owner name. >>> >>> The issue I am running into is the fact that the size of the result >>> set requires paging the data using limit and startkey. This would >>> required that the view key be the inspection date, which means the >>> results cannot be sorted by home owner name. The size of the data >>> means that pulling it all down to the client and sorting in the >>> browser is not performant. >>> >>> Is there a clever way to solve this problem? >>> >>> >>> Thanks, >>> >>> Justin >>> >> >> >> >> -- >> Keith Gable >> A+ Certified Professional >> Network+ Certified Professional >> Web Developer >> > -- Keith Gable A+ Certified Professional Network+ Certified Professional Web Developer
