Я работаю с couchdb 2.1.1 и понятия не имею, что индексы couchdb работают частично и как лучше всего создавать индексы couchdb.
Проблема в том, что я проиндексировал couchdb, работая частично.
Индекс документов
{
"index": {
"fields": [ "field_A, "field_B", "field_C","field_Z" ]
},
"ddoc": "my_index_list",
"name": "my_index_1st",
"type": "json"
}
Выбор запроса
{
"selector": {
"field_A": "value_1",
"field_B": "value_2",
"field_Z":{
"$lte":"value_3"
}
},
"sort":[ "field_A, "field_B", "field_C","field_Z"],
"use_index":[ "my_index_list","my_index_1st" ]
}
Когда я запустил этиВ операторах, данные, извлеченные с диска, отображались в индексных полях частично только «field_A» и «field_B», а не «field_A», «field_B», «field_Z».После выборки механизм couchdb запрашивает условие селектора для согласованных данных «field_Z» в памяти механизма couchdb.
Причина, по которой я догадался, состоит в том, что порядок индекса в документах индекса равен ["field_A" -> -> "field_B "->" field_C "->" field_Z "], но в селекторе не имеет условия о" field_C ".Таким образом, движок couchdb использует индекс частично на «field_A», «field_B».
Как исправить запрос или проиндексировать документы без изменения порядка сортировки?