Cloudant:此排序不存在索引,请尝试按排序字段建立索引

Cloudant: No index exists for this sort, try indexing by the sort fields

我有一个问题持续了几天,我无法解决。

我的数据库中有一个简单的文档,如下所示:

{
  "_id": "asd123",
  "_rev": "revidasd123",
  "type": "CUSTOM_TYPE",
  "position": 8,
  "title": "Short custom title"
}

当我尝试按 位置 进行排序时,即使我已经为该字段创建了索引,我总是会得到相同的错误:

Error: no_usable_index. Reason: No index exists for this sort, try indexing by the sort fields.

这是索引:

{
 "type": "json",
 "def": {
  "fields": [
   {
    "position": "asc"
   }
  ]
 }
}

这是导致此错误的查询:

{
  "selector": {
    "type": "CUSTOM_TYPE",
    "_id":{
      "$gt": null
    }
  },
  "fields": [
    "_id",
    "type",
    "position"
  ],
  "sort": [
    {
      "_id": "asc"
    },
    {
      "position": "asc"
    }
  ]
}

结果:此排序不存在索引,请尝试按排序字段建立索引。

帮助!在此先感谢

如果您想按位置排序,请尝试以下查询:

{
  "selector": {
    "type": "CUSTOM_TYPE",
    "position": {"$gte": 0}
  },
  "fields": [
    "_id",
    "type",
    "position"
  ],
  "sort": [
    {
      "position": "asc"
    }
  ]
}

position 字段需要成为选择器的一部分。我将它设置为匹配 >= 0 的任何位置,因此它应该匹配所有位置,除非它为 null。

此外,您按 _id 排序,然后按 position 排序。这将使 position 排序变得毫无意义。我从排序中删除了 _id 字段。