MongoDB 인덱싱 튜토리얼 – createIndex(), dropindex() 예

인덱스는 모든 데이터베이스에서 매우 중요하며 MongoDB 다르지 않습니다. 인덱스를 사용하여 쿼리 수행 MongoDB 더욱 효율적이 됩니다.

인덱스가 없는 수천 개의 문서로 구성된 컬렉션이 있고 특정 문서를 찾기 위해 쿼리하는 경우 MongoDB 문서를 찾으려면 전체 컬렉션을 스캔해야 합니다. 하지만 인덱스가 있다면 MongoDB 컬렉션에서 검색해야 하는 문서 수를 제한하기 위해 이러한 인덱스를 사용합니다.

인덱스는 컬렉션 데이터의 일부를 저장하는 특수 데이터 세트입니다. 데이터가 부분적이므로 이 데이터를 읽기가 더 쉬워집니다. 이 부분 집합은 특정 필드의 값 또는 필드 값에 따라 정렬된 필드 집합을 저장합니다.

인덱스의 영향 이해

소개에서 인덱스가 쿼리에 유용하다는 것을 살펴보았지만 인덱스가 너무 많으면 삽입, 삭제, 업데이트 등의 다른 작업이 느려질 수 있습니다.

문서에 삽입, 삭제, 업데이트 작업이 자주 수행되는 경우 인덱스도 자주 변경되어야 하며, 이는 컬렉션에 대한 오버헤드일 뿐입니다.

아래 예에서는 컬렉션의 인덱스를 구성할 수 있는 필드 값의 예를 보여줍니다. 인덱스는 컬렉션의 하나의 필드를 기반으로 할 수도 있고 컬렉션의 여러 필드를 기반으로 할 수도 있습니다.

아래 예에서는 Employeeid "1"과 EmployeeCode "AA"가 컬렉션의 문서를 인덱싱하는 데 사용됩니다. 따라서 쿼리 검색이 수행될 때 이러한 색인은 컬렉션에서 필요한 문서를 빠르고 효율적으로 찾는 데 사용됩니다.

따라서 검색 쿼리가 EmployeeCode "AA"를 기반으로 하는 경우에도 해당 문서가 반환됩니다.

인덱스의 영향 이해

인덱스 생성 방법: createIndex()

인덱스 생성 MongoDB "를 사용하여 수행됩니다.createIndex”방법.

다음 예는 컬렉션에 인덱스를 추가하는 방법을 보여줍니다. "Employeeid"와 "EmployeeName"이라는 필드 이름을 가진 동일한 Employee 컬렉션이 있다고 가정해 보겠습니다.

인덱스 생성: createIndex()

db.Employee.createIndex({Employeeid:1})

코드 설명 :

  1. The createIndex 메소드는 문서의 "Employeeid"를 기반으로 인덱스를 생성하는 데 사용됩니다.
  2. '1' 매개변수는 "Employeeid" 필드 값으로 인덱스가 생성될 때 오름차순으로 정렬되어야 함을 나타냅니다. 이는 컬렉션에서 자동으로 생성되는 _id 필드(id 필드는 컬렉션의 각 문서를 고유하게 식별하는 데 사용됨)와 다릅니다. MongoDB. 이제 문서는 _id 필드가 아닌 Employeeid를 기준으로 정렬됩니다.

명령이 성공적으로 실행되면 다음과 같은 출력이 표시됩니다.

출력:

인덱스 생성: createIndex()

  1. numIndexesBefore: 1은 명령이 실행되기 전에 인덱스에 있었던 필드 값(컬렉션의 실제 필드) 수를 나타냅니다. 각 컬렉션에는 인덱스에 대한 필드 값으로도 계산되는 _id 필드가 있다는 점을 기억하세요. _id 인덱스 필드는 처음 생성될 때 컬렉션의 일부이므로 numIndexesBefore 값은 1입니다.
  2. numIndexesAfter: 2는 명령이 실행된 후 인덱스에 있던 필드 값의 수를 나타냅니다.
  3. 여기서 "ok: 1" 출력은 작업이 성공적이었고 새 인덱스가 컬렉션에 추가되었음을 나타냅니다.

위 코드는 하나의 필드 값을 기반으로 인덱스를 생성하는 방법을 보여 주지만 여러 필드 값을 기반으로 인덱스를 생성할 수도 있습니다.

다음 예는 이것이 어떻게 이루어지는지 보여줍니다.

인덱스 생성: createIndex()

db.Employee.createIndex({Employeeid:1, EmployeeName:1])

코드 설명 :

  • createIndex 메소드는 이제 "Employeeid" 및 "EmployeeName"을 기반으로 인덱스가 생성되도록 하는 여러 필드 값을 고려합니다. Employeeid:1 및 EmployeeName:1은 인덱스가 오름차순이어야 함을 나타내는 :2을 사용하여 이 1개의 필드 값에 대해 인덱스를 생성해야 함을 나타냅니다.

인덱스를 찾는 방법: getindexes()

인덱스 찾기 MongoDB 을 사용하여 수행됩니다 “getIndex” 방법.

다음 예는 이것이 어떻게 이루어지는지 보여줍니다.

인덱스 찾기: getindexes()

db.Employee.getIndexes()

코드 설명 :

  • getIndexes 메소드는 컬렉션의 모든 인덱스를 찾는 데 사용됩니다.

명령이 성공적으로 실행되면 다음과 같은 출력이 표시됩니다.

출력:

인덱스 찾기: getindexes()

  • 출력은 컬렉션에 _id 필드인 2개의 인덱스가 있고 다른 인덱스는 Employee id 필드임을 보여주는 문서를 반환합니다. :1은 인덱스의 필드 값이 오름차순으로 생성되었음을 나타냅니다.

인덱스 삭제 방법: dropindex()

인덱스 제거 MongoDB dropIndex 메소드를 사용하여 수행됩니다.

다음 예는 이것이 어떻게 이루어지는지 보여줍니다.

인덱스 삭제: dropindex()

db.Employee.dropIndex(Employeeid:1)

코드 설명 :

  • dropIndex 메소드는 인덱스에서 제거해야 하는 필수 필드 값을 사용합니다.

명령이 성공적으로 실행되면 다음과 같은 출력이 표시됩니다.

출력:

인덱스 삭제: dropindex()

  1. nIndexesWas: 3은 명령이 실행되기 전에 인덱스에 있었던 필드 값의 수를 나타냅니다. 각 컬렉션에는 인덱스에 대한 필드 값으로도 계산되는 _id 필드가 있다는 점을 기억하세요.
  2. ok: 1 출력은 작업이 성공적이었으며 인덱스에서 "Employeeid" 필드가 제거되었음을 나타냅니다.

컬렉션에서 모든 인덱스를 한 번에 제거하려면 dropIndexes 명령을 사용할 수 있습니다.

다음 예는 이것이 어떻게 이루어지는지 보여줍니다.

인덱스 삭제: dropindex()

db.Employee.dropIndex()

코드 설명 :

  • dropIndexes 메소드는 _id 인덱스를 제외한 모든 인덱스를 삭제합니다.

명령이 성공적으로 실행되면 다음과 같은 출력이 표시됩니다.

출력:

인덱스 삭제: dropindex()

  1. nIndexesWas: 2는 명령이 실행되기 전에 인덱스에 있었던 필드 값의 수를 나타냅니다.
  2. 각 컬렉션에는 인덱스에 대한 필드 값으로도 계산되는 _id 필드가 있으며 이는 제거되지 않습니다. MongoDB 이것이 바로 이 메시지가 나타내는 것입니다.
  3. ok: 1 출력은 작업이 성공적이었음을 나타냅니다.

제품 개요

  • 인덱스를 정의하는 것은 컬렉션 내의 문서를 더 빠르고 효율적으로 검색하는 데 중요합니다.
  • createIndex 메소드를 사용하여 인덱스를 생성할 수 있습니다. 하나의 필드 또는 여러 필드 값에 대해 인덱스를 만들 수 있습니다.
  • getIndexes 메소드를 사용하여 인덱스를 찾을 수 있습니다.
  • 단일 인덱스의 경우 dropIndex를 사용하고 모든 인덱스를 삭제하려면 dropIndexes를 사용하여 인덱스를 제거할 수 있습니다.

이 게시물을 요약하면 다음과 같습니다.