couchdb 在内部使用什么排序顺序?
What sort order does couchdb use internally?
关于 couchdb 如何确定它在视图中的排序顺序,我找不到很好的答案。我认为它会是 ASCII 顺序或类似于 javascript 的排序函数,它将所有内容转换为 UTF-16 字符串并根据它们的字节值进行比较。然而,我有点震惊地发现,有以下观点:
(doc) => {
emit("a",null)
emit("b",null)
emit("A",null)
emit("B",null)
}
键没有按照 Array.prototype.sort 生成的排序 ["A","B","a","b"]
,而是 ["a","A","b","B"]
。 couchdb使用的排序顺序是怎样实现的?
这在 CouchDB 文档中有详尽的解释 3.2.2.5. Collation Specification
Comparison of strings is done using ICU which implements the Unicode Collation Algorithm, giving a dictionary sorting of keys. This can give surprising results if you were expecting ASCII ordering.
强调我的
通读该部分应该可以让任何人扎实地掌握整理规则。
关于 couchdb 如何确定它在视图中的排序顺序,我找不到很好的答案。我认为它会是 ASCII 顺序或类似于 javascript 的排序函数,它将所有内容转换为 UTF-16 字符串并根据它们的字节值进行比较。然而,我有点震惊地发现,有以下观点:
(doc) => {
emit("a",null)
emit("b",null)
emit("A",null)
emit("B",null)
}
键没有按照 Array.prototype.sort 生成的排序 ["A","B","a","b"]
,而是 ["a","A","b","B"]
。 couchdb使用的排序顺序是怎样实现的?
这在 CouchDB 文档中有详尽的解释 3.2.2.5. Collation Specification
Comparison of strings is done using ICU which implements the Unicode Collation Algorithm, giving a dictionary sorting of keys. This can give surprising results if you were expecting ASCII ordering.
强调我的
通读该部分应该可以让任何人扎实地掌握整理规则。