2013-01-12 3 views
1

당신이 복합 인덱스 등MongoDB를이

db.collection.ensureIndex({ _id: 1, a: 1 }) 

대신을 가진없이 예를

db.collection.find({ _id: 1, a: 2 }) 

를 들어, MongoDB를 두 개의 필드 쿼리를 커버 수행 할 수있는 복합 인덱스없이 두 필드를 쿼리 덮힌 _id에 대해 하나의 색인 만있는 경우 (기본값),

db.collection.ensureIndex({ a: 1 }) 
과 같이

즉, 두 필드에 대해 커버 된 쿼리를 수행하기 위해 복합 인덱스가 필요한지 아니면 각 필드에 하나씩, 두 개의 단일 (즉, 복합이 아닌) 인덱스가 필요한지 알고 싶습니다.

답변

2

쿼리는 하나만 index을 사용합니다.

이 예제에서는 _id을 색인 요소 중 하나로 표시합니까? _id 컬렉션에서 고유해야하므로 복합 인덱스를 _id과 다른 것으로 만드는 것은 의미가 없습니다.

대신 한 경우 : 다음 b에 필요한 독립적으로, 또는 복합 인덱스로 a 인덱스를 사용할 수

db.collection.ensureIndex({ a: 1, b: 1 }) 

.

+0

감사합니다. 댓글 : "검색어는 하나의 색인 만 사용합니다." 이 말은 어디에서 말하는거야? – GSchv

+1

@GSchv http://docs.mongodb.org/manual/applications/indexes/#create-indexes-to-support-your-queries 해당 섹션의 마지막 줄을 확인하십시오. "$ 또는를 사용하는 쿼리를 제외하고 연산자는 여러 인덱스를 사용할 수 없으며 쿼리는 하나의 인덱스 만 사용해야합니다. " 다른 곳도 있지만 처음 보았습니다. – Sammaye

+0

@Sammaye 고마워요! – GSchv