如何使用单个索引对多个字段分别进行排序

问题描述

我试图在单个索引中声明多个字段,如下所示,并尝试仅对单个字段进行排序。有可能吗?

有没有一种方法可以使用单个合并字段索引对各个字段进行动态排序。

{
    "index": {
        "fields": ["name","createdDate","updatedDate"]
    },"name" : "multi-filter","ddoc" : "MultiFilter"
    "type" : "json"
}

之后,我可以对相同的序列和列表进行排序

{
    "selector": {"name": "Robert De Niro"},"sort": [{"name": "asc"},{"createdDate": "asc"},{"updatedDate": "asc"}]
}

但是,如果我更改顺序或想在单个字段上使用过滤器/排序

{
    "selector": {"name": "Robert De Niro"},"sort": [{"name": "asc"}]
}

它给出了一个错误,我的动机是使用单个索引,但是对单个字段进行排序。看来这是Couch DB的局限性,我需要为同一个数据库创建三个单独的索引以使其正常工作,但仍希望找到最佳选择

{"error":"no_usable_index","reason":"No index exists for this sort,try indexing by the sort fields."}

解决方法

我在这里找到了这个答案:"Unknown Error: mango_idx :: {no_usable_index,missing_sort_index}"}

您只能使用好字段来定义索引,例如:

{
    "index": {
        "fields": ["name"]
    },"name" : "name_sort","type" : "json"
}