2013-05-03 7 views
0

서브 어레이에 대한 인덱스를 가질 수 있습니까?MongoDB, 배열 배열 인덱스

샘플 문서 :

{ 
    'who': [['en', 'Thomas'], ['es', 'Alfonzo'], ['de', 'Helmut']], 
    'otherField': 123 
} 

검색어 :

{'who': 
    { '$elemMatch': { '1': 'Helmut'} } 
} 

나는 쿼리의 이러한 유형의 인덱스가 필요합니다. 감사.

+3

데이터를' '누가' '로 저장했는지 생각해 보았습니다 : [{lang :'en ', 이름 :'Thomas '}, ...]'? – WiredPrairie

+0

예, 가능한 경우 배열을 사용하는 것을 선호합니다. (편집 : 어제부터 실수로이 주석을 삭제했습니다.) – sthr

답변

0

데이터를 여러 가지 조건을 강요하기 때문에 이와 같은 배열을 사용하는 것이 가장 좋은 구조는 아닙니다. 이

... 
"who": [{ 
    "language": "en", "text": "Thomas' 
}, ... ] 
... 

EDIT 같은

뭔가 : (제거 이전 제안) 짐 Dagg는 지적

그런 다음, 당신은 who.text에 인덱스를 만들 수 있습니다.

+0

첫 번째 코드 블록과 같은 배열 내에서 하위 문서를 사용하는 경우 [multikey index] (http://docs.mongodb.org/manual/core/indexes)를 사용할 수 있습니다./# multikey-indexes)를'who.text'와 비교합니다. –

+0

아, 맞습니다. – Paul

+0

감사합니다. 배열 대신 하위 문서를 사용하면 인덱스를 사용할 수 있지만 가능한 경우 배열을 사용하는 것이 더 좋습니다. 상황을 잘 이해한다면 하위 배열을 사용해야하므로 배열 배열을 인덱싱 할 수는 없습니다. – sthr