如何定义在芒果查询中使用的索引

问题描述 投票:1回答:1

我正在尝试创建带有索引的CouchDB Mango查询,希望查询运行得更快。目前,我有以下芒果查询,它返回我想要的内容,但是速度很慢。因此,我认为,我需要创建一个索引以使其更快。我需要帮助弄清楚如何创建该索引。

    selector: {
      categoryIds: {
        $in: categoryIds,
      },
    },
    sort: [{ publicationDate: 'desc' }],

您可以假设我的文档说的是不同类别的新闻文章。因此,在每个文档中,我都有一个字段,其中包含新闻文章所属的一个或多个类别。为此,每个文档都有一个categoryIds数组。我的查询需要针对诸如“给我所有在按publicationDate排序的categoryIds数组中具有categoryId1的新闻”之类的查询进行优化。我不知道该怎么做。1.如何定义索引。2.该索引应该是什么。3.如何在芒果查询的“ use_index”字段中使用该索引。任何帮助表示赞赏。

“ AlexisCôté”回答后更新:

如果我这样定义索引:

{
  "_id": "_design/0f11ca4ef1ea06de05b31e6bd8265916c1bbe821",
  "_rev": "6-adce50034e870aa02dc7e1e075c78361",
  "language": "query",
  "views": {
    "categoryIds-json-index": {
      "map": {
        "fields": {
          "categoryIds": "asc"
        },
        "partial_filter_selector": {}
      },
      "reduce": "_count",
      "options": {
        "def": {
          "fields": [
            "categoryIds"
          ]
        }
      }
    }
  }
}

并像这样运行芒果查询:

{
   "selector": {
      "categoryIds": {
         "$in": [
            "e0bd5f97ac35bdf6893351337d269230"
         ]
      }
   },
   "use_index": "categoryIds-json-index"
}

它仍然会返回结果,但是它们的发布顺序未按我想要的顺序排序。因此,我不清楚您所建议的解决方案是什么。

couchdb couchdb-futon couchdb-nano couchdb-mango
1个回答
0
投票
  1. 您可以按照here中的说明创建索引>
  2. 根据您的情况,您将需要在“ categoryIds”字段上建立索引。
  3. 您可以使用"use_index": "_design/<name>"指定索引

    注意:如果兼容,查询计划者应自动选择该索引。

© www.soinside.com 2019 - 2024. All rights reserved.