Docs Menu
Docs Home
/ / /
루비 드라이버

인덱스를 사용하여 쿼리 최적화

이 페이지에서는 MongoDB Ruby 드라이버 사용하여 다양한 유형의 인덱스를 관리 방법을 보여주는 복사 가능한 코드 예제를 볼 수 있습니다.

이 페이지의 예시 사용하려면 코드 예시 샘플 애플리케이션 또는 자체 애플리케이션 에 복사합니다. 코드 예시의 모든 자리 표시자(예: <connection string>)를 MongoDB deployment 에 필요한 관련 값으로 바꿔야 합니다.

다음 샘플 애플리케이션 사용하여 이 페이지의 코드를 테스트할 수 있습니다. 샘플 애플리케이션 사용하려면 다음 단계를 수행하세요.

  1. 프로젝트 에 Ruby 운전자 설치되어 있는지 확인합니다. 자세한 학습 은 다운로드 및 설치 가이드 참조하세요.

  2. 다음 코드를 복사하여 새 .rb 파일에 붙여넣습니다.

  3. 이 페이지에서 코드 예제를 복사하여 파일의 지정된 줄에 붙여넣습니다.

require 'mongo'
# Replace the placeholders with your credentials
uri = "<connection string>"
# Sets the server_api field of the options object to Stable API version 1
options = { server_api: { version: "1" }}
# Creates a new client and connect to the server
client = Mongo::Client.new(uri, options)
database = client.use('<database name>')
collection = database[:<collection name>]
# Start example code here
# End example code here
client.close

다음 예시 에서는 지정된 필드 에 오름차순 인덱스 를 생성합니다.

collection.indexes.create_one({ <field name>: 1 })

단일 필드 인덱스에 학습 보려면 단일 필드 인덱스 가이드 를 참조하세요.

다음 예시 지정된 두 필드에 복합 인덱스 생성합니다.

collection.indexes.create_one({ <field name 1>: -1, <field name 2>: 1 })

복합 인덱스에 대해 자세히 알아보려면 복합 인덱스 가이드를 참조하세요.

다음 예시 에서는 지정된 배열 값 필드 에 멀티키 인덱스 를 생성합니다.

collection.indexes.create_one({ <field name>: 1 })

멀티키 인덱스에 대해 자세히 알아보려면 멀티키 인덱스 가이드를 참조하세요.

다음 예시 에서는 GeoJSON 객체를 포함하는 지정된 필드 에 2dsphere 인덱스 를 생성합니다.

collection.indexes.create_one({ <GeoJSON field name>: '2dsphere' })

지리 공간적 인덱스에 대해 자세히 알아보려면 지리 공간적 인덱스 가이드를 참조하세요.

다음 섹션에는 Atlas Search 인덱스를 관리 하는 방법을 설명하는 코드 예제가 포함되어 있습니다.

검색 인덱스에 대해 자세히 학습 Atlas Search 인덱스 가이드 참조하세요.

다음 예시 에서는 지정된 필드 에 Atlas Search 인덱스 를 생성합니다.

index_definition = {
mappings: {
dynamic: false,
fields: {
<field name>: { type: '<field type>' }
}
}
}
collection.search_indexes.create_one(index_definition, name: '<index name>')

다음 예시 에서는 지정된 컬렉션 의 Atlas Search 인덱스 목록을 출력합니다.

puts collection.search_indexes.collect(&:to_json)

다음 예시 에서는 지정된 새 인덱스 정의로 기존 Atlas Search 인덱스 를 업데이트합니다.

updated_definition = {
mappings: {
dynamic: false,
fields: { <updated field name>: { type: '<updated field type>' } }
}
}
collection.search_indexes.update_one(updated_definition, name: '<index name>')

다음 예시 에서는 지정된 이름의 Atlas Search 인덱스 를 삭제합니다.

collection.search_indexes.drop_one(name: '<index name>')

다음 예시 에서는 지정된 string 필드 에 텍스트 인덱스 를 생성합니다.

collection.indexes.create_one({ <field name>: 'text' })

텍스트 인덱스에 대해 자세히 알아보려면 텍스트 인덱스 가이드를 참조하세요.

다음 예시 에서는 지정된 인덱스 사양 배열 에 여러 인덱스를 생성합니다.

collection.indexes.create_many([
{ key: { <field name 1>: 1 } },
{ key: { <field name 2>: -1 } },
])

다음 예시 에서는 지정된 이름의 인덱스 를 삭제합니다.

collection.indexes.drop_one( '<index name>' )

다음 예시 컬렉션 의 모든 인덱스를 삭제 방법을 보여 줍니다.

collection.indexes.drop_all

다음 예시 에서는 지정된 컬렉션 의 모든 인덱스 목록을 출력합니다.

puts collection.indexes.collect(&:to_json)

다음은 인덱스를 생성할 때 추가할 수 있는 사용 가능한 옵션의 전체 목록입니다. 이러한 옵션은 명령에서 지원하는 옵션을 createIndex 미러링합니다. 자세한 내용은 MongoDB Server 매뉴얼에서createIndex 명령을 참조하세요.

옵션
설명

:background

true 또는 false 입니다. 인덱스가 백그라운드에서 생성되도록 지시합니다.

:expire_after

collection의 문서가 만료되는 데 걸리는 시간(초)입니다.

:name

인덱스의 이름입니다.

:sparse

인덱스를 희소(sparse)해야 하는지 여부( true 또는 false 입니다.

:storage_engine

이 특정 인덱스에 대한 storage engine의 이름입니다.

:version

사용할 인덱스 형식 버전입니다.

:default_language

텍스트 인덱스의 기본 언어입니다.

:language_override

기본 언어를 재정의할 때 사용할 필드 이름입니다.

:text_version

텍스트 인덱스 저장을 위한 버전 형식입니다.

:weights

텍스트 검색에서 필드와 가중치를 지정하는 문서입니다.

:sphere_version

2D 구 인덱스 버전입니다.

:bits

2D 인덱스에서 위도 및 경도의 최대 경계를 설정합니다.

:max

2D 인덱스에서 위도 및 경도의 최대 경계입니다.

:min

2D 인덱스에서 위도 및 경도의 최소 경계입니다.

:bucket_size

geo haystack 인덱스에서 위치 값을 그룹화할 단위 수입니다.

:partial_filter_expression

부분 인덱스에 대한 필터입니다.

:hidden

인덱스를 숨길지 여부를 지정하는 부울입니다. 숨겨진 인덱스는 collection에 존재하지만 쿼리 플래너에서 사용되지 않는 인덱스입니다.

:commit-quorum

프라이머리를 포함한 복제본 세트 의 데이터 보유 멤버 수를 지정하여 프라이머리 프라이머리 가 인덱스를 준비됨으로 표시하기 전에 인덱스 빌드를 성공적으로 완료해야 합니다. 잠재적인 값은 다음과 같습니다.

  • 0 부터 복제본 세트 멤버 수까지의 정수

  • “majority” 데이터 보유 노드의 과반수가 투표해야 함을 나타냅니다.

  • “votingMembers” 즉, 투표 데이터를 가진 모든 노드는 반드시 투표해야 합니다.

자세한 내용은 MongoDB Server 매뉴얼의 commitQuorom을 참조하세요.

이 가이드 에 사용된 메서드 또는 객체에 대해 자세히 학습 다음 API 설명서를 참조하세요.

돌아가기

복제본 세트에 대한 작업

이 페이지의 내용