如何匹配单词并按包含db的最小订单排序?

时间:2015-06-29 08:25:18

标签: couchdb pouchdb

我正在尝试创建联系人应用程序,同时尝试学习数据包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"

1 个答案:

答案 0 :(得分:0)

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

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

然后用例如:

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

我觉得有必要补充一点,即使是SQL数据库也会做同样的事情。它只是在引擎盖下透明地进行,而在PouchDB / CouchDB中,它更明确。尝试在MySQL中对您的查询进行EXPLAIN,您将看到我的意思:))