Cloudant:此类别不存在索引,请尝试通过排序字段进行索引

时间:2017-10-11 13:19:12

标签: database sorting nosql couchdb cloudant

我的问题持续了几天,我无法解决。

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

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

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

  

错误:no_usable_index。原因:此类别不存在索引,请尝试按排序字段进行索引。

这是索引:

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

这是我的查询导致此错误:

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

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

帮助!提前致谢

1 个答案:

答案 0 :(得分:3)

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

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

position字段必须是选择器的一部分。我将其设置为匹配任何> = 0的位置,因此它应匹配all,除非它为null。

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