我正在尝试使用索引创建一个 CouchDB Mango Query,希望查询运行得更快。目前我有以下芒果查询,它返回我正在寻找的内容,但速度很慢。因此,我认为,我需要创建一个索引以使其更快。我需要帮助弄清楚如何创建该索引。
selector: {
categoryIds: {
$in: categoryIds,
},
},
sort: [{ publicationDate: 'desc' }],
您可以假设我的文档是来自不同类别的新闻文章。因此,在每个文档中,我都有一个字段,其中包含新闻文章所属的一个或多个类别。为此,我categoryIds
为每个文档都有一个数组。我的查询需要针对诸如“给我所有在其 categoryIds 数组中具有 categoryId1 的新闻(按 PublicationDate 排序)”之类的查询进行优化。我不知道该怎么做是 1.如何定义索引 2.该索引应该是什么 3.如何在 Mango Query 的“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"
]
}
}
}
}
}
并像这样运行 Mango Query:
{
"selector": {
"categoryIds": {
"$in": [
"e0bd5f97ac35bdf6893351337d269230"
]
}
},
"use_index": "categoryIds-json-index"
}
它仍然会返回结果,但它们没有按我想要的发布日期排序。所以我不清楚你建议的解决方案是什么。