Couchdb 如何定义在Mango查询中使用的索引

Couchdb 如何定义在Mango查询中使用的索引,couchdb,couchdb-futon,couchdb-nano,couchdb-mango,Couchdb,Couchdb Futon,Couchdb Nano,Couchdb Mango,我试图创建一个带有索引的CouchDB Mango查询,希望查询运行得更快。目前,我有下面的芒果查询,它返回我正在寻找的内容,但速度很慢。因此,我假设,我需要创建一个索引来加快速度。我需要帮助弄清楚如何创建索引 selector: { categoryIds: { $in: categoryIds, }, }, sort: [{ publicationDate: 'desc' }], 你可以假设我的文档是来自不同类别的新闻文章。因

我试图创建一个带有索引的CouchDB Mango查询,希望查询运行得更快。目前,我有下面的芒果查询,它返回我正在寻找的内容,但速度很慢。因此,我假设,我需要创建一个索引来加快速度。我需要帮助弄清楚如何创建索引

    selector: {
      categoryIds: {
        $in: categoryIds,
      },
    },
    sort: [{ publicationDate: 'desc' }],
你可以假设我的文档是来自不同类别的新闻文章。因此,在每个文档中,我都有一个字段,其中包含新闻文章所属的一个或多个类别。为此,我为每个文档提供了一个
categoryID
数组。我的查询需要针对以下查询进行优化:“给我所有按publicationDate排序的CategoryId数组中包含CategoryId的新闻”。我不知道该怎么做。如何定义索引2。这个指数应该是3。如何在Mango查询的“use_index”字段中使用该索引。感谢您的帮助

在“Alexis Cô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"
}
并按如下方式运行Mango查询:

{
  "_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"
}
它仍然返回结果,但它们没有按照我希望的publicationDate排序。所以我不清楚你建议的解决方案是什么

  • 您可以创建文档化的索引
  • 在您的情况下,需要在“CategoryId”字段上建立索引
  • 您可以使用
    “使用索引”:“\u design/”
    注意:如果该索引兼容,查询计划器应自动选择该索引

  • 您可以创建文档化的索引
  • 在您的情况下,需要在“CategoryId”字段上建立索引
  • 您可以使用
    “使用索引”:“\u design/”
    注意:如果该索引兼容,查询计划器应自动选择该索引


  • @要使用排序,我认为字段必须在查询中,也可能在索引中。不确定是否可以使用$in对索引进行排序operator@Dogahe要使用排序,我认为字段必须在查询中,也可能在索引中。不确定是否可以使用$in运算符对索引进行排序