CouchBase (4.1.1)에서 N1QL은 전체 요소를 사용하여 색인을 생성 할 수 있습니다.이 두 예제를 사용하십시오. 수 있다는 점이다CouchBase 색인 중첩 요소
{
"name": "blah",
"credentials": [
{
"level": 5,
"sector": "XP"
}
],
}
이제 우리는 오프 이름과 전체 자격 증명 요소의 기반 index1의를 만들고 싶었 말 :
우리가이 문서 구조를 갖고 있다고?뭔가 이름과 레벨 등의 중첩 된 필드 중 하나의 기반으로
create index indexName on `bucketName` (name, credentials) USING GSI;
또는 index2
같은; 어떻게이 일을 할 수 있니?create index indexName on `bucketName`(name, credential.levels) USING GSI;
같은 내 보조 인덱스가이 버킷에 대한 기본 인덱스로 사용 카우치베이스 주식회사 기본값되지 않는 설명 실행.
여기에 제가 사용하는 선택입니다. 여기에서 생산되는
select s.name, s.credentials
from `security` unnest s.credentials
where credentials is not missing and name = 'tom';
설명 :
{
"requestID": "f8d46eeb-3898-4ace-a24f-1582e0504eb7",
"signature": "json",
"results": [
{
"#operator": "Sequence",
"~children": [
{
"#operator": "PrimaryScan",
"index": "#primary",
"keyspace": "read",
"namespace": "default",
"using": "gsi"
},
{
"#operator": "Parallel",
"~child": {
"#operator": "Sequence",
"~children": [
{
"#operator": "Fetch",
"as": "s",
"keyspace": "bucketName",
"namespace": "default"
},
{
"#operator": "Unnest",
"as": "beacons",
"expr": "(`s`.`credentials`)"
},
{
"#operator": "Filter",
"condition": "((`s`.`name`) = \"tom\")"
},
{
"#operator": "InitialProject",
"result_terms": [
{
"expr": "(`s`.`id`)"
},
{
"expr": "`credentials`"
}
]
},
{
"#operator": "FinalProject"
}
]
}
}
]
}
],
"status": "success",
"metrics": {
"elapsedTime": "2.82063ms",
"executionTime": "2.765439ms",
"resultCount": 1,
"resultSize": 1917
}
}
(1) Couchbase 버전, (2) 실행하려는 쿼리 (전체 쿼리 포함) 및 (3) "이들이 나를 위해 작동하지 않음"을 나타내는 질문을 편집하십시오. 무슨 일이 일어나고있는거야?). – geraldss
방금 Couchbase에서 실행했는데 올바르게 실행되었습니다. 나는 당신이 "나를 위해 일하지 않는다"는 것이 그 인덱스를 사용하지 않는 SELECT를 실행하고 있다고 가정합니다. 사용중인 SELECT와 EXPLAIN을 포함하면 도움이 될 것입니다. (아마도 @geraldss가 무엇을 의미합니까?) –
@mgroves 샘플 쿼리를 추가했습니다. –