2012-11-08 2 views
4

그래서 내가 카우치베이스 주식회사에서 이해하는 것과 하나가 Couchbase에서 _View_ 값의 결과를 어떻게 정렬합니까?

descending=true 

를 사용하여 * 키를 정렬 할 수 있지만 내 경우에는 내가 대신 값을 기준으로 정렬 할 것입니다. 트위터 데이터를 json 형식으로 생각하십시오. 제 질문은 입니다. 가장 인기있는 사용자는 무엇이라고 언급 했습니까?

각 트윗의 구조를 가지고 :

나는지도 기능을 다시 다음과 같이 카우치베이스 주식회사에 사용할 수있을 약간 수정하기 전에 그래서 MongoDB를 사용하는 데
{ 
    "text": "", 
    "entities" : { 
     "hashtags" : [ ... ], 
     "user_mentions" : [ ...], 
     "urls" : [ ... ] 
} 

: 다음

function (doc, meta) { 
    if (!doc.entities) { return; } 

    doc.entities.user_mentions.forEach(
    function(mention) { 
     if (mention.screen_name !== undefined) { 
     emit(mention.screen_name, null); 
     } 
    } 
) 
} 

과 나는 reduce 함수 _count을 사용하여 screen_name 발생 횟수를 모두 계산했습니다. 이제 내 문제는 키가 아닌 카운트 값을 기준으로 정렬하는 방법은 무엇입니까? 짧은 대답은 당신이 볼 당신이 값으로 결과를 정렬 할 수 없습니다입니다

감사

답변

1

. 키순으로 만 정렬 할 수 있습니다.

  • 는 카우치베이스 주식회사에 삽입하기 전에 데이터를 분석하고

  • 사용 (귀하의 경우 언급)에 의해 관심있는 값에 대한 카운터를 만들 :

    일부 작업은 약 중 하나를하는 것입니다 보기의 크기가 클라이언트 측 정렬에 적합한 경우 응용 프로그램 크기로 정렬해야하는보기.

다음 JS 코드는 뷰를 호출 결과를 정렬하고 인쇄 10 개 가장 인기있는 주제 (해시 태그) : 같은 시간에

var http = require('http'); 

var options = { 
    host: '127.0.0.1', 
    port: 8092, 
    path: '/social/_design/dev_tags/_view/tags?full_set=true&connection_timeout=60000&group=true', 
    method: 'GET' 
} 

http.request(
    options, 
    function(res) { 
     var buf = new Buffer(0); 
     res.on('data', function(data) { 
      buf += data; 
     }); 
     res.on('end', function() { 
      var tweets = JSON.parse(buf); 
      var rows = tweets.rows; 
      rows.sort(function (a,b){ return b.value - a.value } 
      ); 


      for (var i = 0; i < 10; i++) { 
       console.log(rows[i]); 
      } 
     }); 
    } 
    ).end(); 

나는이

을 달성하기 위해 다른 옵션에서 찾고
+0

흠 나는이 대답을 받아들이는 매우 꺼려 해요 개발자, 그래서이 질문의 장수 ... – chutsu

+0

@ 츄, 내가 준 대답은 Couchbase 2.0 (그리고 당신은 바로 미래의 제품에 Couchbase 아마 이것을 달성하는 방법을 제공 할 것입니다) 파벨의 질문은 고전의 하나입니다 Couchbase보기를 사용하여 이것이 내가 티를 명확하게하고 싶었던 이유입니다. –

+0

"파벨의 질문은 고전적인 질문입니다." : p – chutsu

1

복합 키를 사용하여이를 해결했습니다.

function (doc, meta) { 
    emit([doc.constraint,doc.yoursortvalue]); 
} 

URL 요소 : 나는 "당신은 종류의 값으로는 할 수없는"나는 결국 카우치베이스 주식회사에 의해 해결할 수의 문제를 생각 알고 있지만

&startkey=["jim",5]&endkey=["jim",10]&descending=true 
관련 문제