我正在尝试创建联系人应用程序,同时尝试学习数据包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"
。
答案 0 :(得分:0)
无法将前缀搜索与整数搜索相结合。但您可以先进行前缀搜索,然后在内存中进行排序:
by_frequency: function(doc){
emit(doc.displayName.toLowerCase());
}
然后用例如:
查询{
startkey: "some",
endkey: "some\uffff",
include_docs: true
}
我觉得有必要补充一点,即使是SQL数据库也会做同样的事情。它只是在引擎盖下透明地进行,而在PouchDB / CouchDB中,它更明确。尝试在MySQL中对您的查询进行EXPLAIN,您将看到我的意思:))