与这两个CouchDB问题非常相似:3311225和8924793,但这些方法不允许部分匹配。有例如这些条目:
[{_id: 1, status: 'NEW', name: 'a'},
{_id: 2, status: 'NEW', name: 'aab'},
{_id: 3, status: 'NEW', name: 'ab'},
{_id: 4, status: 'NEW', name: 'aaa'},
{_id: 5, status: 'NEW', name: 'aa'}]
和键
[status, name, _id]
似乎没有办法
startsWith
)因为 name 上的部分字符串匹配。允许此部分匹配的high value unicode character \uffff也会导致忽略密钥的_id
部分,这意味着结果条目不按_id
排序,而是按状态和名称排序。
var status = 'NEW';
var name = 'aa'
var query = {
startkey: [status, name],
endkey: [status, name + '\uffff', {}],
skip: 0,
limit: 10
};
结果
[{_id: 5, status: 'NEW', name: 'aa'},
{_id: 4, status: 'NEW', name: 'aaa'},
{_id: 2, status: 'NEW', name: 'aab'}]
没有选项可以在内存中进行排序,因为这只会对单个页面进行排序,而不是对整个数据集进行排序。有关于此的任何想法吗?