Docs Menu
Docs Home
/ /

배열의 포함된 필드에 인덱스 만들기

배열 내의 내장된 문서 필드에 인덱스를 생성할 수 있습니다. 이러한 인덱스는 배열에 나타나는 특정 포함 필드에 대한 쿼리 성능을 향상시킵니다. 배열 내부의 필드에 인덱스를 생성하면 MongoDB는 해당 인덱스를 다중 키 인덱스로 저장합니다.

인덱스 를 만들려면 db.collection.createIndex() 메서드를 사용합니다. 작업은 다음 프로토타입과 유사해야 합니다.

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

이 페이지의 예에서는 이러한 문서가 포함된 inventory 컬렉션을 사용합니다.

db.inventory.insertMany( [
{
"item": "t-shirt",
"stock": [
{
"size": "small",
"quantity": 8
},
{
"size": "large",
"quantity": 10
},
]
},
{
"item": "sweater",
"stock": [
{
"size": "small",
"quantity": 4
},
{
"size": "large",
"quantity": 7
},
]
},
{
"item": "vest",
"stock": [
{
"size": "small",
"quantity": 6
},
{
"size": "large",
"quantity": 1
}
]
}
] )

재고가 5개 미만인 품목은 언제든지 추가 재고를 주문해야 합니다. 재정렬할 항목을 찾으려면 stock 배열의 요소에 quantity 5 보다 작은 문서를 쿼리합니다. 이 쿼리의 성능을 향상시키려면 stock.quantity 필드에 인덱스를 생성할 수 있습니다.

다음 작업은 inventory 컬렉션의 stock.quantity 필드에 오름차순 다중 키 인덱스를 생성합니다.

db.inventory.createIndex( { "stock.quantity": 1 } )

stock 에 배열 값이 포함되어 있으므로 MongoDB는 인덱스를 멀티키 인덱스로 저장합니다.

인덱스에는 stock.quantity 필드에 나타나는 각 개별 값에 대한 키가 포함되어 있습니다. 인덱스는 오름차순입니다. 즉, 키가 [ 1, 4, 6, 7, 8, 10 ] 순서로 저장됩니다.

인덱스는 stock.quantity 필드에서 선택하는 쿼리를 지원합니다. 예를 들어, 다음 쿼리는 stock 배열의 요소 중 하나 이상에서 quantity 크기가 5 미만인 문서를 반환합니다.

db.inventory.find(
{
"stock.quantity": { $lt: 5 }
}
)

출력:

[
{
_id: ObjectId("63449793b1fac2ee2e957ef3"),
item: 'vest',
stock: [ { size: 'small', quantity: 6 }, { size: 'large', quantity: 1 } ]
},
{
_id: ObjectId("63449793b1fac2ee2e957ef2"),
item: 'sweater',
stock: [ { size: 'small', quantity: 4 }, { size: 'large', quantity: 7 } ]
}
]

인덱스은 다음 쿼리와 같이 stock.quantity 필드에 대한 정렬 작업도 지원합니다.

db.inventory.find().sort( { "stock.quantity": -1 } )

출력:

[
{
_id: ObjectId("63449793b1fac2ee2e957ef1"),
item: 't-shirt',
stock: [ { size: 'small', quantity: 8 }, { size: 'large', quantity: 10 } ]
},
{
_id: ObjectId("63449793b1fac2ee2e957ef2"),
item: 'sweater',
stock: [ { size: 'small', quantity: 4 }, { size: 'large', quantity: 7 } ]
},
{
_id: ObjectId("63449793b1fac2ee2e957ef3"),
item: 'vest',
stock: [ { size: 'small', quantity: 6 }, { size: 'large', quantity: 1 } ]
}
]

MongoDB는 객체 배열을 내림차순으로 정렬할 때 값이 가장 높은 요소가 있는 필드를 기준으로 정렬합니다.

돌아가기

배열 필드에 생성

이 페이지의 내용