Предположим, я создаю индекс для Object_pair (значения) .val.data .
Будет ли мой индекс хранить поле «значения» в виде массива (с именами элементов для ID и val для данных из-за object_pair)?
Если это так, а также, если мой n1ql запрос является покрытым запросом (выборка только Object_pair (values) .val.data с помощью предложения select), будут ли по-прежнему накладные расходы на производительность? (Поскольку у меня сложилось впечатление, что в приведенном выше случае, поскольку индекс уже содержал бы поле « values » в виде массива, фактическое преобразование object_pair не происходило бы, следовательно, избегая накладных расходов. Только в случае непокрытого запроса будет доступен фактический документ и выполнено преобразование object_pair в поле « values ».
Couchbase document:
"values": {
"item_1": {
"data": [{
"name": "data_1",
"value": "A"
},
{
"name": "data_2",
"value": "XYZ"
}
]
},
"item_2": {
"data": [{
"name": "data_1",
"value": "123"
},
{
"name": "data_2",
"value": "A23"
}
]
}
}
}```
UPDATE:
suppose if we plan to create index on Object_pair(values)[*].val.data & Object_pair(values)[*].name
Index: CREATE INDEX idx01 ON ent_comms_tracking(ARRAY { value.name, value.val.data} FOR value IN object_pairs(values) END)
Query: SELECT ARRAY { value.name, value.val.data} FOR value IN object_pairs(values) END as values_array FROM bucket