(MongoDB) Partial Index
Partial Index를 만들기 위해서는
db.collection.createIndex()메소드를 사용한 후, partialFilterExpression을 옵션으로 사용할 수 있다.
db.collection.createIndex()메소드를 사용한 후, partialFilterExpression을 옵션으로 사용할 수 있다.
- equality expressions (i.e. field: value)또는 $eq
- $exists: true expression
- $gt, $gte, $lt, $lte expressions
- $type expressions
- $and operator at the top-level only
예)
db.restaurants.createIndex(
{ cuisine: 1, name: 1 },
{ partialFilterExpression: { rating: { $gt: 5 } } }
)
다음 인덱스는 rating이 5보다 클 경우만 인덱스가 생성된다.
db.restaurants.find( { cuisine: "Italian", rating: { $gte: 8 } } )
위 쿼리는 8 이상인것만 조회를 시도하므로 생성된 인덱스를 사용할 것이다.
그러나
db.restaurants.find( { cuisine: "Italian", rating: { $lt: 8 } } )
이 쿼리는 8미만인것을 조회하므로 인덱스 조건인 5보다 큰 경우에 위배되는 상황이 발생하므로 인덱스를 사용하지 않을것이다.
db.restaurants.find( { cuisine: "Italian" } )
그저 filter조건에만 해당하는 위 쿼리도 인덱스를 사용하지 못한다.
주의사항 :
- _id필드는 partialIndex가 될 수 없다.
- Shard key indexes cannot be partial indexes.
댓글
댓글 쓰기