Multikey Indexes
이 페이지의 내용
개요
멀티키 인덱스는 배열 값 필드에 대한 쿼리 성능을 개선하는 인덱스입니다. 단일 필드 또는 복합 인덱스 와 동일한 구문을 사용하여 멀티키 인덱스 를 정의할 수 있습니다.
샘플 데이터
이 가이드 의 예제에서는 Atlas 샘플 데이터 세트 의 sample_mflix
데이터베이스 에 있는 movies
컬렉션 을 사용합니다. 무료 MongoDB Atlas cluster 를 생성하고 샘플 데이터 세트를 로드하는 방법을 학습 보려면 Atlas 시작하기 가이드 를 참조하세요.
멀티키 인덱스 만들기
다음 예에서는 cast
필드에 멀티키 인덱스를 생성합니다.
bson_error_t error; bson_t *keys = BCON_NEW ("cast", BCON_INT32 (1)); mongoc_index_model_t *index_model = mongoc_index_model_new (keys, NULL); if (mongoc_collection_create_indexes_with_opts (collection, &index_model, 1, NULL, NULL, &error)) { printf ("Successfully created index\n"); } else { fprintf (stderr, "Failed to create index: %s", error.message); } bson_destroy (keys); mongoc_index_model_destroy (index_model);
다음 예시 에서는 이전 코드 샘플 에서 생성된 인덱스 를 사용하는 쿼리 를 수행합니다.
const bson_t *doc; bson_t *filter = BCON_NEW ("cast", BCON_UTF8 ("Viola Davis")); mongoc_cursor_t *results = mongoc_collection_find_with_opts (collection, filter, NULL, NULL); while (mongoc_cursor_next (results, &doc)) { char *str = bson_as_canonical_extended_json (doc, NULL); printf ("%s\n", str); bson_free (str); } mongoc_cursor_destroy (results); bson_destroy (filter);
{ "_id" : ..., "cast" : [ "Kelsey Grammer", "Cary Elwes", "Viola Davis", "John C. McGinley" ], "title" : "The Pentagon Wars", ... } { "_id" : ..., "cast" : [ "George Clooney", "Natascha McElhone", "Viola Davis", "Jeremy Davies" ], "title" : "Solaris", ... } { "_id" : ..., "cast" : [ "Meryl Streep", "Philip Seymour Hoffman", "Amy Adams", "Viola Davis" ], "title" : "Doubt", ... } { "_id" : ..., "cast" : [ "Hugh Jackman", "Jake Gyllenhaal", "Viola Davis", "Maria Bello" ], "title" : "Prisoners", ... } { "_id" : ..., "cast" : [ "Emma Stone", "Viola Davis", "Bryce Dallas Howard", "Octavia Spencer" ], "title" : "The Help", ... } ...
멀티키 인덱스는 쿼리 커버리지, 인덱스 바운드 계산 및 정렬 동작 측면에서 다른 인덱스와 다르게 작동합니다. 멀티키 인덱스의 동작과 제한 사항에 대한 논의를 포함하여 멀티키 인덱스에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 멀티키 인덱스 가이드를 참조하세요.
API 문서
이 가이드 에서 설명하는 함수에 학습 보려면 다음 API 문서를 참조하세요.