Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB에서 텍스트 검색을 위한 인덱스 생성 방법

MongoDB에서는 텍스트(text) 인덱스를 생성하면 컬렉션 내 문자열 데이터를 빠르고 효율적으로 검색할 수 있습니다. 이 글에서는 실제 예제를 통해 텍스트 검색용 인덱스를 생성하고 활용하는 과정을 단계별로 살펴보겠습니다.

1. 샘플 컬렉션 및 문서 생성

먼저 문서를 포함하는 컬렉션을 생성합니다. insertOne() 메서드를 사용하여 두 개의 문서를 삽입해 보겠습니다.

> db.demo331.insertOne({"Words":"This is a MySQL"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e521c35f8647eb59e562089")
}
> db.demo331.insertOne({"Words":"THIS is a MongoDB"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e521c36f8647eb59e56208a")
}

2. find() 메서드로 전체 문서 조회하기

삽입된 모든 문서를 확인하려면 find() 메서드를 사용합니다.

> db.demo331.find();

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{ "_id" : ObjectId("5e521c35f8647eb59e562089"), "Words" : "This is a MySQL" }
{ "_id" : ObjectId("5e521c36f8647eb59e56208a"), "Words" : "THIS is a MongoDB" }

3. 텍스트 검색용 인덱스 생성하기

이제 createIndex() 메서드에 "text" 옵션을 지정하여 텍스트 검색용 인덱스를 생성합니다.

> db.demo331.createIndex( {Words: "text" } );
{
   "createdCollectionAutomatically" : false,
   "numIndexesBefore" : 1,
   "numIndexesAfter" : 2,
   "ok" : 1
}

인덱스가 정상적으로 생성되면 numIndexesAfter 값이 증가한 것을 확인할 수 있습니다. 이제 $text 연산자와 $search 조건을 사용하여 특정 단어를 검색해 보겠습니다.

> db.demo331.find({$text:{$search:"MySQL"}});

실행 결과는 다음과 같습니다.

{ "_id" : ObjectId("5e521c35f8647eb59e562089"), "Words" : "This is a MySQL" }

정리

이처럼 MongoDB에서는 createIndex({필드: "text"})로 텍스트 인덱스를 생성한 뒤, $text: { $search: ... } 쿼리를 활용하면 대량의 문자열 데이터에서도 원하는 단어를 빠르게 검색할 수 있습니다. 참고로 텍스트 검색은 기본적으로 대소문자를 구분하지 않으므로, "MySQL"과 "mysql" 모두 동일하게 매칭됩니다.