2011-01-21 1 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