Docs Menu
Docs Home
/
데이터베이스 매뉴얼
/ / /

자체 관리 배포서버에 와일드카드 텍스트 인덱스 생성

컬렉션 의 string 데이터가 있는 모든 문서 필드 를 포함하는 텍스트 인덱스 를 만들 수 있습니다. 이러한 텍스트 인덱스를 와일드카드 텍스트 인덱스 라고 합니다. 와일드카드 텍스트 인덱스는 알 수 없거나, 임의적이거나, 동적으로 생성된 필드에 대한 텍스트 검색 을 지원 합니다.

와일드카드 텍스트 인덱스를 만들려면 인덱스 키를 와일드카드 지정자( $** )로 설정하고 인덱스 값을 text 로 설정합니다.

db.<collection>.createIndex( { "$**": "text" } )

와일드카드 텍스트 인덱스는 와일드카드 인덱스와 구별됩니다. 와일드카드 텍스트 인덱스는 $text 연산자 를 사용하는 쿼리를 지원 하지만 와일드카드 인덱스는 지원하지 않습니다.

참고

$text 자체 관리(비Atlas) 배포를 위한 텍스트 쿼리 기능을 제공합니다. MongoDB Atlas 에서 호스팅되는 데이터의 경우, MongoDB 는 향상된 전체 텍스트 쿼리 솔루션인 Atlas Search 를 제공합니다.

와일드카드 텍스트 인덱스를 생성한 후 문서를 삽입하거나 업데이트하면 새 문자열 필드 값을 포함하도록 인덱스가 업데이트됩니다. 결과적으로 와일드카드 텍스트 인덱스는 삽입 및 업데이트의 성능에 부정적인 영향을 미칩니다.

인덱스 하려는 필드를 알 수 없거나 변경될 수 있는 경우에만 와일드카드 텍스트 인덱스를 사용하세요. 와일드카드 텍스트 인덱스는 특정 필드에서 대상 텍스트 인덱스만큼 성능이 좋지 않습니다. 컬렉션 에 대상 인덱스를 방해하는 임의의 필드 이름이 포함된 경우 일관적인 필드 이름을 갖도록 스키마 를 리모델링하는 것이 좋습니다. 대상 인덱스에 학습 보려면 쿼리를 지원하는 인덱스 생성을 참조하세요.

다음 문서로 blog 컬렉션을 생성합니다.

db.blog.insertMany( [
{
_id: 1,
content: "This morning I had a cup of coffee.",
about: "beverage",
keywords: [ "coffee" ]
},
{
_id: 2,
content: "Who likes chocolate ice cream for dessert?",
about: "food",
keywords: [ "poll" ]
},
{
_id: 3,
content: "My favorite flavors are strawberry and coffee",
about: "ice cream",
keywords: [ "food", "dessert" ]
}
] )

blog 컬렉션 에 와일드카드 텍스트 인덱스 를 만듭니다.

db.blog.createIndex( { "$**": "text" } )

와일드카드 텍스트 인덱스는 컬렉션의 모든 필드에 대한 텍스트 검색 쿼리를 지원합니다. 다음 쿼리를 고려해보세요.

blog 컬렉션 에서 coffee string 을 쿼리합니다.

db.blog.find( { $text: { $search: "coffee" } } )

출력:

[
{
_id: 1,
content: 'This morning I had a cup of coffee.',
about: 'beverage',
keywords: [ 'coffee' ]
},
{
_id: 3,
content: 'My favorite flavors are strawberry and coffee',
about: 'ice cream',
keywords: [ 'food', 'dessert' ]
}
]

앞의 쿼리 는 모든 필드 에 coffee string 이 포함된 모든 문서를 반환합니다.

blog 컬렉션 에서 또는 이 포함된 문서를 string poll coffee쿼리합니다.

db.blog.find( { $text: { $search: "poll coffee" } } )

출력:

[
{
_id: 1,
content: 'This morning I had a cup of coffee.',
about: 'beverage',
keywords: [ 'coffee' ]
},
{
_id: 3,
content: 'My favorite flavors are strawberry and coffee',
about: 'ice cream',
keywords: [ 'food', 'dessert' ]
},
{
_id: 2,
content: 'Who likes chocolate ice cream for dessert?',
about: 'food',
keywords: [ 'poll' ]
}
]

앞의 쿼리는 임의의 필드에 string poll 또는 coffee가 포함된 문서를 반환합니다.

정확한 문자열 chocolate ice cream를 포함하는 문서에 대한 blog 컬렉션 쿼리합니다.

db.blog.find( { $text: { $search: "\"chocolate ice cream\"" } } )

출력:

[
{
_id: 2,
content: 'Who likes chocolate ice cream for dessert?',
about: 'food',
keywords: [ 'poll' ]
}
]

앞의 쿼리 모든 필드 에 정확한 문자열 chocolate ice cream 을 포함하는 문서를 반환합니다.

  • 텍스트 쿼리 결과의 순위를 제어하는 방법을 학습 보려면 자체 관리형 배포에서 텍스트 검색 결과에 가중치 할당을 참조하세요.

  • 와일드카드 텍스트 인덱스 를 복합 텍스트 인덱스 의 일부로 포함할 수 있습니다. 복합 텍스트 인덱스에 학습 보려면 복합 텍스트 인덱스 생성을 참조 하세요.

  • 검색 쿼리의 예를 보려면 $text를 참조하세요.

    참고

    $text 이 페이지에서는 자체 관리형(Atlas에서 관리하지 않는) 배포를 위한 일반 텍스트 쿼리 기능을 제공합니다. MongoDB Atlas에서 호스팅되는 데이터의 경우 MongoDB는 향상된 전체 텍스트 쿼리 솔루션인 Atlas Search를 제공합니다.

  • 대소문자 구분과 같은 텍스트 인덱스 속성에 학습 보려면 자체 관리 배포서버의 텍스트 인덱스 속성을 참조하세요.

돌아가기

만들기

이 페이지의 내용