(MongoDB) Partial Index

Partial Index를 만들기 위해서는
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.





댓글

이 블로그의 인기 게시물

(18장) WebSocekt과 STOMP를 사용하여 메시징하기

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬