문서 메뉴
문서 홈
/
MongoDB 매뉴얼
/ / /

모든 필드에 와일드카드 인덱스 만들기

이 페이지의 내용

  • 이 작업에 대하여
  • 시작하기 전에
  • 절차
  • 결과
  • 자세히 알아보기

가능한 모든 문서 필드에 대한 쿼리를 지원하는 와일드카드 인덱스를 생성할 수 있습니다. 와일드카드 인덱스는 임의의 또는 알 수 없는 필드 이름에 대한 쿼리를 지원합니다.

모든 필드( _id 제외)에 와일드카드 인덱스를 만들려면 와일드카드 지정자($**)를 인덱스 키로 사용합니다.

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

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

다음 문서를 포함하는 artwork 컬렉션을 생성합니다.

db.artwork.insertMany( [
{
"name": "The Scream",
"artist": "Edvard Munch",
"style": "modern",
"themes": [ "humanity", "horror" ]
},
{
"name": "Acrobats",
"artist": {
"name": "Raoul Dufy",
"nationality": "French",
"yearBorn": 1877
},
"originalTitle": "Les acrobates",
"dimensions": [ 65, 49 ]
},
{
"name": "The Thinker",
"type": "sculpture",
"materials": [ "bronze" ],
"year": 1904
}
] )

각 문서에는 작품에 대한 세부 정보가 포함되어 있습니다. 필드 이름은 해당 조각에 대해 사용 가능한 정보에 따라 문서마다 다릅니다.

다음 작업은 artwork collection( _id 제외)의 모든 문서 필드에 와일드카드 인덱스를 생성합니다.

db.artwork.createIndex( { "$**" : 1 } )

이 인덱스는 collection의 모든 필드에 대한 단일 필드 쿼리를 지원합니다. 문서에 내장된 문서 또는 배열이 포함된 경우 와일드카드 인덱스는 문서 또는 배열을 순회하여 문서 또는 배열의 모든 필드에 대한 값을 저장합니다.

예를 들어 인덱스는 다음 쿼리를 지원합니다.

  • 쿼리:

    db.artwork.find( { "style": "modern" } )

    출력:

    [
    {
    _id: ObjectId("6352c401b1fac2ee2e957f09"),
    name: 'The Scream',
    artist: 'Edvard Munch',
    style: 'modern',
    themes: [ 'humanity', 'horror' ]
    }
    ]
  • 쿼리:

    db.artwork.find( { "artist.nationality": "French" } )

    출력:

    [
    {
    _id: ObjectId("6352c525b1fac2ee2e957f0d"),
    name: 'Acrobats',
    artist: { name: 'Raoul Dufy', nationality: 'French', yearBorn: 1877 },
    originalTitle: 'Les acrobates',
    dimensions: [ 65, 49 ]
    }
    ]
  • 쿼리:

    db.artwork.find( { "materials": "bronze" } )

    출력:

    [
    {
    _id: ObjectId("6352c387b1fac2ee2e957f08"),
    name: 'The Thinker',
    type: 'sculpture',
    materials: [ 'bronze' ],
    year: 1904
    }
    ]

특정 필드를 프로젝트하도록 와일드카드 인덱스를 만드는 방법을 알아보려면 다음 페이지를 참조하세요.

와일드카드 인덱스의 동작에 대해 자세히 알아보려면 다음을 참조하세요.

← 와일드카드 인덱스에 필드 포함 또는 제외하기