Sorting 数据库:过滤、排序和分页

Sorting 数据库:过滤、排序和分页,sorting,couchdb,pouchdb,Sorting,Couchdb,Pouchdb,与这两个CouchDB问题非常相似:而且,除了这些方法不允许部分匹配之外。例如,具有以下条目: [{_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, n

与这两个CouchDB问题非常相似:而且,除了这些方法不允许部分匹配之外。例如,具有以下条目:

[{_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
    )筛选这些条目
  • 按id订购
  • 给它们编页码
  • 因为名称上的部分字符串匹配。允许此部分匹配的也会导致忽略键的
    \u id
    部分,这意味着结果项不是按
    \u 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'}]
    
    内存中没有排序选项,因为这只会对单个页面进行排序,而不会对整个数据集进行排序。有什么想法吗