2014-09-29 2 views
0

mongodb에서 모든 인덱스 값을 빠르게 나열 할 수 있기를 원합니다. 순간을 위해 나는 FOO의 다양한 컬렉션을 가지고 있다고 할 수 있습니다 :Mongodb : 인덱싱 된 필드의 모든 값을 빠르게 나열하십시오.

public class Foo{ 

    @ID 
    private ObjectID id; 
    @Indexed 
    private List<String> bars; 
    @Indexed List<String> bazs; 
    ... 
} 

같은 내가 대부분을 지출 할 것이기 때문에, 비효율적 적으로 foo를 반복하고 바 목록을보고 그 바, 바즈의 반복,있을 수 있습니다 반복을보고있는 나의 시간.

각 Foo 객체를 보지 않고도 모든 '막대'값을 신속하게 나열하려면 어떻게해야합니까? 인덱스가 작성 되었기 때문에 모든 인덱스가 쉽게 반복적으로 나열된 어딘가에 테이블이 있어야합니다. 그러나, 나는 이것을하기 위해 mongodb 명령을 찾지 못하는 것입니까? 또는 mongo와 인터페이스하기 위해 java를 사용하고 있기 때문에 더 나은 아직 morphia 명령

답변

1

당신은 distinct을 찾고 있습니다. 이것은 목록/배열에서도 잘 작동 할 것입니다. MongoDB는 사용할 수있는 경우 색인을 사용합니다.

불행하게도이 기능 isn't yet implemented in Morphia,하지만 당신은 자바 드라이버를 사용하여 다음을 수행 할 수 있습니다 더 복잡한 예를 들어

DBCollection c = collection; 
List bars = c.distinct("bars"); 

unit test for this feature를 참조하십시오.

+0

자바 측 또는 몽고 측에서 이와 같은 일이 발생 했습니까? 그것은 자바 쪽 소리처럼? – dsollen

+0

일반 MongoDB : http://docs.mongodb.org/manual/reference/method/db.collection.distinct/ – xeraa

관련 문제