PouchDB:过滤、排序和分页

2024-02-22

与这两个 CouchDB 问题非常相似:3311225 https://stackoverflow.com/questions/3311225/couchdb-sorting-and-filtering-in-the-same-view and 8924793 https://stackoverflow.com/questions/8924793/couch-db-filter-by-key-and-sort-by-another-field,除了这些方法不允许部分匹配。具有例如这些条目:

[{_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'}]

and key

[status, name, _id]

似乎没有办法

  1. 过滤这些条目status(完整字符串匹配)和name(部分字符串匹配~startsWith)
  2. 按以下顺序排序id
  3. 对它们进行分页

因为部分字符串匹配name. The 高值 unicode 字符 \uffff http://couchdb.readthedocs.io/en/latest/couchapp/views/collation.html#string-ranges允许这种部分匹配也会导致忽略_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'}]

没有在内存中排序的选项,因为这只会对各个页面进行排序,而不是对整个数据集进行排序。对此有什么想法吗?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PouchDB:过滤、排序和分页 的相关文章

随机推荐