假设我在Object_pair(values).val.data上创建了一个索引。
我的索引是否会将“值”字段存储为数组(由于 object_pair,ID 为元素名称,数据为 val)?
如果是这样,并且如果我的n1ql查询是覆盖查询(通过 select 子句仅获取 Object_pair(values).val.data ),还会有性能开销吗?(因为我的印象是,在上述情况下,由于索引已经包含“<em>values”字段作为数组,因此不会发生实际的object_pair转换,因此避免了开销。仅在未覆盖的情况下查询将访问实际文档并在“<em>values”字段上完成 object_pair 转换)。
Couchbase 文档:
"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