web-dev-qa-db-ja.com

並べ替えられたデータで個別の値を取得する

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

スコアですべてのレコードを並べ替えて、個別のキーを返すクエリが必要です。

14
Sagar Varpe

Mongodbには 個別のコマンド があります:

次のように個別に使用できます。

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}); 
2
Andrew Orsich

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

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

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

12
Stuart