2014-05-22 4 views
0

다음과 같은 컬렉션이 있습니다. "location"및 "product_list.id"를 색인화하려고합니다. MongoDB는 문서에서 하나의 다중 키 인덱스 만 허용하는 것으로 보입니다. 가능하면 해결할 수 있을까요?다른 다중 키 인덱스가있는 지형 인덱스 ... 모든 솔루션?

{ 
    "location":[62.99932,71.23424], 
    "product_list":[ 
     {"id":"wf2r34f34ff33", "price": "87.99"}, 
     {"id":"f334r3rff43ff", "price": "21.00"}, 
     {"id":"wf2r34f34ffef", "price": "87.99"}      
     ], 

    } 

답변

0

사실, 당신은 단지 컬렉션의 단일 화합물 지수 내에서 필드의 단일 배열 형 인덱스,하지만 당신은 조금 다른 뭔가있다 "지리적 공간"쿼리에 대해 이야기 할 것 같다 수 있습니다. 이것에 전혀 문제가 없습니다.

db.collection.ensureIndex({ "location": "2d", "product_list": 1 }) 

이는 복합 색인에 대해 매우 유효한 형식입니다.

그래서 배열과 비슷하지만,이 경우 MongoDB는 다르게 처리합니다.

+0

대단원! Niel에게 감사한다. 당신은 저에게 동일한 문서의 상세한 설명을 제공하는 문서 나 블로그를 가르쳐 줄 수 있습니까? 나는 이것을 시도 할 것이다. – Joe

+0

[this] (http://docs.mongodb.org/manual/reference/operator/query/near/#considerations)와 같은 설명서에는 지형 공간 쿼리를 다른 특수 문자와 결합 할 수 없다는 진술이 몇 가지 있습니다. 텍스트와 같은 그러나 화합물에 다른 간단한 키를 추가하는 데는 아무런 문제가 없습니다. 그래서 화합물에 멀티 키 인덱스가되는 것은 문제가 아닙니다. 간단한 테스트는 인덱스 작성이 오류를 일으키지 않으며 실제로 쿼리에서 사용될 수 있다는 것입니다. 예를 들어'location : 1, product_list : 1'을 시도하면 오류가 발생합니다. –