2011-01-21 4 views
13

나는 내가 질의를 필요로

{key ="SAGAR" 
score =16 
note ="test1" 
} 

{key ="VARPE" 
score =17 
note ="test1" 
} 

{key ="SAGAR" 
score =16 
note ="test2" 
} 

{key ="VARPE" 
score =17 
note ="test2" 
} 

처럼 기록이 1.6.5

MongoDB를 에 점수를 기준으로 정렬과 개별의 키를 얻기 위해 질의를 필요로 정렬 된 데이터와 고유 값을 얻을 수있는

당신에게 : MongoDB의에서 distinct command 있습니다

+0

그럼이 데이터 집합에 대해이 쿼리를 실행하면 원하는 결과가 나타납니다. 쿼리 질문을 할 때 항상 가장 좋은 것은 무엇입니까? –

+0

사용하는 프로그래밍 언어는 무엇입니까? –

+0

@ Bugal13 SCALA를 사용하고 있습니다. –

답변

2

..... 점수에 모든 레코드를 정렬하고 나에게 별개의 키를 반환 이 같은 독특한 사용할 수 있습니다

db.test.distinct({"key":true,"score":true,"note":true}); 

관계형 데이터베이스에서 같은 :

.sort({score : 1}) // 1 = asc, -1 = desc 

전체 결과는 다음과 같이 될 것입니다 :

다음 코드를 추가하여

SELECT DISTINCT key,score,note FROM test; 

그리고보다 sort result

db.test.distinct({"key":true,"score":true,"note":true}).sort({score : 1}); 
+11

분명히 더 이상 가능하지 않습니다. (v3.8.0) - 뚜렷한. 확인 할수 있어요? – cyberwombat

+5

별칭을 사용할 수 없습니다 –

+0

기능 요청이 활성화되어 있습니다. 동일한 문제가있는 경우 투표하십시오 : https://jira.mongodb.org/browse/SERVER-2130 – UpTheCreek

9

집계 프레임 워크를 사용하여 구분하려는 요소별로 그룹화 할 수 있습니다 (그룹은 별개입니다). 이것은 개별의 키가 발생합니다

db.test.aggregate([ 
    { $sort : { score : -1 } }, 
    { $group : {_id : "$key", scores : { $push : "$score" } } } 
]) 

: 키 점수에 의해 정렬 그룹 (이미 정렬) 요소의 배열로 점수를 추가 - 당신이 점수를 정렬하려는 경우 그럼 별개의 다음 작업을 수행 할 수있는 열쇠를 얻을 중복 키가있는 문서에 포함 된 점수 인 일련의 점수와 함께 나는 이것이 당신이 찾고있는 것과 정확히 일치하지 않는다. 나는 이것이 오래된 질문이라는 것을 알고있다. 그러나 나는 이것이 이것을 시도하는 다른 방법으로서 미래에 그것을 보는 다른 누군가를 도울 것이라고 생각했다.

+0

$ push는 잘못된 연산자입니다. 대신 $ addToSet을 사용하십시오. – user3072843