Hi Jonas,

I see @rnewson has replied to you on IRC already, just closing this out for 
posterity.

_all_docs is sorted “raw”, that is by Erlang binary comparison rules (think 
ascii code points, but not quite).

Views are sorted using the ICU library, which defines sorting according to the 
natural language specified in your locale.

Best
Jan
--


> On 15 Sep 2015, at 12:54, Jonas Weber <[email protected]> wrote:
> 
> Hi everybody,
> 
> please take a look at the following transcript. It creates a database, 
> inserts some documents and queries them. My issue is the sorting of _all_docs 
> vs the result of the view: In the first case, hello leads, while in the 
> second case Hello comes first:
> 
> $ curl http://localhost:5984/
>      
> {"couchdb":"Welcome","uuid":"a96430b1b7736a09cf6433604a030bd2","version":"1.6.1","vendor":{"name":"The
>  Apache Software Foundation","version":"1.6.1"}}
> $ curl -X PUT http://localhost:5984/test-ids
>     {"ok":true}
> $ curl -X POST http://localhost:5984/test-ids/_bulk_docs 
> -HContent-type:application/json -d'{"docs": [{"_id": "Hello"}, {"_id": 
> "hello"}, {"_id": "_design/tst", "views": {"ids": {"map":"function (doc) { 
> emit(doc._id, 1); }"}}}]}'
>     
> [{"ok":true,"id":"Hello","rev":"1-967a00dff5e02add41819138abb3284d"},{"ok":true,"id":"hello","rev":"1-967a00dff5e02add41819138abb3284d"},
>      
> {"ok":true,"id":"_design/tst","rev":"1-e267a159c1b990605f05150480ccc754"}]
> $ curl http://localhost:5984/test-ids/_all_docs
>      {"total_rows":3,"offset":0,"rows":[
>      
> {"id":"Hello","key":"Hello","value":{"rev":"1-967a00dff5e02add41819138abb3284d"}},
>      
> {"id":"_design/tst","key":"_design/tst","value":{"rev":"1-e267a159c1b990605f05150480ccc754"}},
>      
> {"id":"hello","key":"hello","value":{"rev":"1-967a00dff5e02add41819138abb3284d"}}
>      ]}
> $ curl http://localhost:5984/test-ids/_design/tst/_view/ids
>      {"total_rows":2,"offset":0,"rows":[
>      {"id":"hello","key":"hello","value":1},
>      {"id":"Hello","key":"Hello","value":1}
>      ]}
> $
> 
> When I do the same in PouchDB, the results are different (but consistent):
> 
> var db = new PouchDB('test-ids');
> db.replicate.from('http://localhost:5984/test-ids')
> .then(function () { return db.allDocs(); })
> .then(function (docs) { console.log(JSON.stringify(docs.rows)); return 
> db.query('tst/ids'); })
> .then(function (docs) { console.log(JSON.stringify(docs.rows)); })
> 
> gives
> 
> [{"id":"Hello","key":"Hello","value":{"rev":"1-967a00dff5e02add41819138abb3284d"}},{"id":"_design/tst",.....},{"id":"hello","key":"hello","value":{"rev":"1-967a00dff5e02add41819138abb3284d"}}]
> [{"key":"Hello","id":"Hello","value":1},{"key":"hello","id":"hello","value":1}]
> 
> Is this behaviour a bug or a feature? The documentation for views says:
>       • Text (case sensitive, lowercase first)
> Best regards,
> Jonas Weber

-- 
Professional Support for Apache CouchDB:
http://www.neighbourhood.ie/couchdb-support/

Reply via email to