Как исправить запросы couchdb, избегая парциальной индексации? - PullRequest
0 голосов
/ 30 ноября 2018

Я работаю с couchdb 2.1.1 и понятия не имею, что индексы couchdb работают частично и как лучше всего создавать индексы couchdb.

Проблема в том, что я проиндексировал couchdb, работая частично.

  1. Индекс документов

    {
        "index": {
            "fields": [  "field_A, "field_B", "field_C","field_Z"  ]
        },
        "ddoc": "my_index_list",
        "name": "my_index_1st",
        "type": "json"
    }
    
  2. Выбор запроса

    { 
        "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».

Как исправить запрос или проиндексировать документы без изменения порядка сортировки?

...