0
下面的通信字段是較大的json文件的一部分。我試圖索引的字段是code
深層嵌套JSON數組的Couchbase N1QL數組索引
"communication": [
{
"language": {
"coding": [
{
"code": "en-US",
"system": "http://hl7.org/fhir/ValueSet/languages",
"display": "English (United States)"
}
]
}
}
]
我寫了這個創建索引的代碼和它運行得很好,沒有錯誤
create index `patient_communication_language_coding_code` on
neuron(distinct array
(distinct array c.code for c in v.language.coding end)
for v in communication end)
但是當我嘗試查詢它不選擇索引或使用它..
select * from `neuron` as r use index(patient_communication_language_coding_code)
where any comm in r.communication satisfies
any coding in comm.language.coding satisfies coding.code = 'en-US'
end
end;
以上查詢是有效的。我以前索引的數組在couchbase中,但這種情況是array.object.array.object這是code
字段。沒有語法錯誤。我是我做錯了什麼,或者它不可能索引數組這麼深?
在4.6.1 ANY子句中的變量需要匹配在指數使用的變量。在4.6.2+變量中可以是任意的。 https://developer.couchbase.com/documentation/server/current/n1ql/n1ql-language-reference/indexing-arrays.html1 select * from'neuron' as r use index(patient_communication_language_coding_code) where any v in r.communication滿足 v.language.coding中的任何c都滿足c.code ='en-US' end end; – vsr