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.

强调我的

通读该部分应该可以让任何人扎实地掌握整理规则。