Я пытаюсь создать CouchDB Man go Запрос с индексом в надежде, что запрос будет выполняться быстрее. На данный момент у меня есть следующий Man go Query, который возвращает то, что я ищу, но это медленно. Поэтому, я полагаю, мне нужно создать индекс, чтобы сделать его быстрее. Мне нужна помощь, чтобы понять, как создать этот индекс.
selector: {
categoryIds: {
$in: categoryIds,
},
},
sort: [{ publicationDate: 'desc' }],
Можно предположить, что мои документы, скажем, новостные статьи из разных категорий. Поэтому в каждом документе у меня есть поле, которое содержит одну или несколько категорий, к которым относится новостная статья. Для этого у меня есть массив categoryIds
для каждого документа. Мой запрос должен быть оптимизирован для запросов типа «Дайте мне все новости, которые имеют categoryId1 в их массиве categoryIds, отсортированных по публикацииDate». Что я не знаю, как это сделать: 1. Как определить индекс 2. Каким должен быть этот индекс 3. Как использовать этот индекс в поле «use_index» запроса Man go. Любая помощь приветствуется.
Обновление после ответа "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"
]
}
}
}
}
}
И запустим Man go Запрос вот так:
{
"selector": {
"categoryIds": {
"$in": [
"e0bd5f97ac35bdf6893351337d269230"
]
}
},
"use_index": "categoryIds-json-index"
}
Он по-прежнему возвращает результаты, но они не сортируются в порядке, который я хочу по публикацииDate. Так что мне не ясно, что вы предлагаете для решения проблемы.