Las Map/Reduce Views son una parte importante de Couchbase 2.0 y entender cómo consultarlas también es importante. Nuestra documentación es excelente y se puede encontrar aquí: http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-views.html
Una de las sutilezas es comprender el orden de las letras en la Colación Unicode, que es diferente del orden de bytes (como ASCII), que es al que estamos más acostumbrados, ya que se utiliza en la mayoría de los lenguajes de programación para ordenar cadenas mediante comparaciones de cadenas.
Orden de bytes (como ASCII)
Intercalación Unicode (opción por defecto)
Observe que las letras están agrupadas, es decir, minúsculas y luego mayúsculas de la misma letra, en lugar de un intervalo de todas las mayúsculas y luego un intervalo de todas las minúsculas.
Además, con caracteres no ingleses, los acentos siguen un principio similar, así:
Observe que todos los caracteres "a y las variantes acentuadas ocurren antes de la A mayúscula y sus variantes, que también aparecen antes de cualquier carácter "b".
Ejemplo de pedido
En orden de bytes (como ASCII), las siguientes claves indexadas se ordenarían en este orden:
Sin embargo, en Unicode Collation utilizado en Couchbase Views, este es el orden en el que realmente se producirían:
Por tanto, a la hora de determinar su tecla de inicio y endkey rangos para las cuerdas, ¡es importante conocer este ordenamiento!
Ejemplos
Por ejemplo, usando la base de datos beer-sample que viene empaquetada con Couchbase 2.0, y quisiera consultar Breweries by_name:
Cervecerías que empiezan por Y mayúscula:
Sólo devolverá los que empiecen por Y mayúscula.
Cervecerías que empiezan por Y minúscula o Y mayúscula:
Resulta que sólo devuelve todos los que tienen mayúsculas debido a los datos suministrados, pero incluiría los que tienen minúsculas.
Sólo cervecerías que empiezan por y minúscula:
No debería devolver ningún resultado con los datos suministrados, ¡porque son todos Y mayúsculas!
Esta última es probablemente la menos intuitiva si vienes de una mentalidad de orden de bytes ASCII. ¡Espero que esto sea útil para los que hacen consultas de rango!
PD. Si te interesa el tema de la intercalación Unicode, puedes obtener más información en estas urls:
http://www.unicode.org/reports/tr10/
http://userguide.icu-project.org/collation/customization#TOC-Default-Options
Tenga en cuenta que el final de la tabla de cotejo unicode latino es u02ad. Es bueno saberlo cuando se busca hasta el final. A veces puede ver uefff que funciona, pero no es técnicamente correcto.