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

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

단일 필드 의 와일드카드 인덱스는 인덱싱된 필드 의 모든 하위 필드에 대한 쿼리를 지원 합니다. 와일드카드 인덱스를 사용하여 미리 알 수 없거나 문서마다 다른 필드 이름에 대한 쿼리를 지원 합니다.

단일 필드 에 와일드카드 인덱스 를 만들려면 db.collection.createIndex() 메서드를 사용하고 인덱스 키에 와일드카드 지정자($**)를 포함합니다.

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

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

products 컬렉션을 만들고 다음 문서를 포함합니다.

db.products.insertMany( [
{
"product_name" : "Spy Coat",
"attributes" : {
"material" : [ "Tweed", "Wool", "Leather" ],
"size" : {
"length" : 72,
"units" : "inches"
}
}
},
{
"product_name" : "Spy Pen",
"attributes" : {
"colors" : [ "Blue", "Black" ],
"secret_feature" : {
"name" : "laser",
"power" : "1000",
"units" : "watts",
}
}
}
] )

다음 작업은 attributes 필드에 와일드카드 인덱스를 생성합니다.

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

와일드카드 인덱스 는 attributes 또는 포함된 필드에 대한 단일 필드 쿼리를 지원합니다. 예를 예시 인덱스 는 다음 쿼리를 지원합니다.

  • 쿼리:

    db.products.find( { "attributes.size.length" : { $gt : 60 } } )

    출력:

    [
    {
    _id: ObjectId("63472196b1fac2ee2e957ef6"),
    product_name: 'Spy Coat',
    attributes: {
    material: [ 'Tweed', 'Wool', 'Leather' ],
    size: { length: 72, units: 'inches' }
    }
    }
    ]
  • 쿼리:

    db.products.find( { "attributes.material" : "Leather" } )

    출력:

    [
    {
    _id: ObjectId("63472196b1fac2ee2e957ef6"),
    product_name: 'Spy Coat',
    attributes: {
    material: [ 'Tweed', 'Wool', 'Leather' ],
    size: { length: 72, units: 'inches' }
    }
    }
    ]
  • 쿼리:

    db.products.find(
    { "attributes.secret_feature.name" : "laser" },
    { "_id": 0, "product_name": 1, "attributes.colors": 1 }
    )

    출력:

    [
    {
    product_name: 'Spy Pen',
    attributes: { colors: [ 'Blue', 'Black' ] }
    }
    ]

와일드카드 인덱스는 인덱싱된 필드 에 내장된 객체 ( 예시: attributes.secret_feature)가 포함된 경우 특정 동작을 수행합니다. 자세한 내용 은 내장된 객체 및 배열에 대한 와일드카드 인덱스 를 참조하세요.

와일드카드 인덱스의 동작 및 사용 사례에 학습 보려면 다음을 참조하세요.

돌아가기

와일드카드

이 페이지의 내용