mongodb aggregation (distinct)

mongodb 의 distinct 는 어떻게 할까

step 1. 테스트 데이터 만들어 넣기
* 몽고디비 접속 옵션중 –shell 옵션을 사용하여 js 화일을 로딩합니다. js 화일에 선언되어있는 함수나 셋팅을 현재 세션에서 사용 할 수 있습니다.

step 2. map reduce 를 이용해서 값을 가져오기

step 3. aggregation 함수를 사용해서 시도
* aggregate 함수는 mongodb ver 2.2.0 이상에서 지원 됩니다.
* 함수 사용법은 aggregate([{필터},{필터},{필터}]) 와 같습니다. 자세한 내용은 “http://docs.mongodb.org/manual/aggregation/” 에 가시면 볼수 있습니다.

결과값

{
    "result" : [
    {
        "_id" : { "a" : "여수", "b" : "파주"},
        "n" : 2
    },
    {
        "_id" : { "a" : "서울", "b" : "일본"},
        "n" : 1
    },
    {
        "_id" : { "a" : "강릉", "b" : "서울"},
        "n" : 1
    },
    {
        "_id" : { "a" : "서울", "b" : "시드니"},
        "n" : 2
    },
    {
        "_id" : { "a" : "파주", "b" : "서울"},
        "n" : 1
    },
    {
        "_id" : { "a" : "서울", "b" : "서울"},
        "n" : 5
    }
],
    "ok" : 1
}

*몽고디비의 aggregate 는 bson 을 C 로 만들어서 조금더 속도가 낫다는 10gen의 언급이 있습니다.

  • Facebook
  • Google Plus
  • Twitter
  • LinkedIn
  • Pinterest
  • Tumblr
  • Instapaper
  • Delicious