2011-01-21 59 views
13

我需要一個查詢來獲取與排序不同的鍵上得分的基礎上MongoDB中1.6.5得到重複值與排序數據

我有記錄,如

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

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

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

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

我需要一個查詢其排序分數上的所有記錄,並返回我不同鍵.....

+0

那麼,如果你對這組數據運行這個查詢,結果會是什麼(總是詢問查詢問題時顯示的最好的東西) – 2011-01-21 14:08:49

+0

你使用什麼編程語言? – 2011-01-21 16:10:49

+0

@ Bugal13我正在使用SCALA – 2011-01-24 11:30:19

回答

2

distinct command MongoDB中:

你可以用不同的是這樣的:

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

在關係數據庫中的相同:下面的代碼

SELECT DISTINCT key,score,note FROM test; 

而且比sort result加入:

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

總的結果會是這樣:

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

可以使用聚合框架按要分離的元素進行分組(組使其不同)。

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

這將導致不同的鍵:按鍵排序得分,組,並添加評分爲元素的數組(已排序) - 所以,如果你想進行排序,得分則得到不同的鍵,你可以做到以下幾點以及一系列分數,這些分數是包含在具有重複鍵的文檔中的那些分數。我不確定這正是你想要的,我知道這是一個古老的問題,但我認爲這可能有助於其他人在未來看到它 - 作爲這樣做的另一種方式。