Type: New Feature
Affects Version/s: 0.11
Fix Version/s: None
Skill Level:Committers Level (Medium to Hard)
A common operation I find myself performing repeatedly is:
- request a view (maybe with some basic filter like "keys" or a range of keys)
- in my client, filter this view based on some complex criteria, leaving me with a small set of document IDs (complex as in array intersections, compound boolean operations, & other stuff not possible in the HTTP view API)
- go back to Couch and fetch the complete documents for these IDs.
List Views almost get me to the point of doing this purely in Couch. I can enumerate over a view and do some complex things with it. But I can't output entire documents, unless I use the include_docs=true flag which murders the performance of the list view.Apparently because the entire view is fetched with including docs, THEN passed on to the list view JS. Typically my complex filter criteria is contained in the view itself, so there is no need to fetch the entire document until I know I have a match.
Performance would certainly not be as good as fetching a raw view, but it would indisputably be better than fetching the entire view over HTTP to a client, deserializing the JSON, doing some stuff, then making another HTTP request, and deserializing more JSON.
I looked at the various entry points for list views in the Couch source. Unfortunately it will take me some time to come up to speed with the source (if I ever have the time ...), and I hope that what I'm asking for could be a simple extension to the List Views for someone very familiar with this area.