如何匹配一个单词并按 pouch db 中最小的顺序排序?

How to match a word and sort by an order with a minimum in pouch db?

我在尝试学习 pouch db 的同时尝试创建联系人应用程序。我希望按联系人 frequency 对查询进行排序。 frequency 是一个简单的整数,每次联系此人时都会递增。

到目前为止,我已经尝试建立我的观点,例如

by_frequency: function(doc){
   emit(doc.displayName.toLowerCase(), doc.frequency);
}

然后通过

查询
{
   startkey: [query],
   endkey:   [query + '\uffff', {}],
   descending: true
}

但答案不是我需要的,事实上它甚至没有按频率排序

是否可以做类似

的事情
{
      startkey: [query, 1],
      endkey: [query + '\uffff', {}]
}

我还考虑过使用 startkey: 1 按频率对所有文档进行排序,然后根据名称过滤它们,但感觉不对……或者这是唯一的方法吗?

在SQL中会是这样的

"SELECT * FROM contacts WHERE name LIKE "some%" order by frequency desc"

无法将前缀搜索与整数搜索结合起来。但是您可以先进行前缀搜索,然后在内存中排序:

by_frequency: function(doc){
   emit(doc.displayName.toLowerCase());
}

然后查询如:

{
  startkey: "some",
  endkey: "some\uffff",
  include_docs: true
}

我觉得有必要补充一点,即使是 SQL 数据库也会做同样的事情。它只是在后台透明地执行此操作,而在 PouchDB/CouchDB 中,它更明确。尝试对 MySQL 中的查询进行 EXPLAIN,您就会明白我的意思:)