20

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"
}

すべてのレコードをスコアでソートし、個別のキーを返すクエリが必要です.....

4

2 に答える 2

13

集計フレームワークを使用して、区別したい要素でグループ化できます (グループによって区別されます)。したがって、スコアで並べ替えて個別のキーを取得する場合は、次のようにします-スコアで並べ替え、キーでグループ化し、スコアを要素の配列として追加します(すでに並べ替えられています):

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

これにより、重複キーを持つドキュメントに含まれるスコアであるスコアの配列とともに個別のキーが生成されます。これがまさにあなたが探しているものかどうかはわかりませんし、これが古い質問であることは知っていますが、これを行う別の方法として、将来他の誰かがそれを見ているのに役立つかもしれないと思いました.

于 2014-08-11T09:49:53.993 に答える
4

mongodb には明確なコマンドがあります。

次のようにdistinctを使用できます。

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

リレーショナル データベースでも同じです。

SELECT DISTINCT key,score,note FROM test; 

そして、次のコードを追加して結果をソートするよりも:

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

合計結果は次のようになります。

 db.test.distinct({"key":true,"score":true,"note":true}).sort({score : 1}); 
于 2011-01-21T16:22:13.053 に答える