私は競争結果を保持するコレクションを持っています。MongoDBクエリのソート順の並べ替え
{"person" : "Adam", "time" : 10.01, "compName" : "comp A"}
{"person" : "Bob", "time" : 10.12, "compName" : "comp B"}
{"person" : "Adam", "time" : 9.03, "compName" : "comp C"}
{"person" : "Adam", "time" : 10.99, "compName" : "comp D"}
{"person" : "David", "time" : 10.05, "compName" : "comp D"}
{"person" : "Bob", "time" : 10.78, "compName" : "comp E"}
私はこのコレクションからランキングを取得しようとしています。
私はdb.results.find({}).sort({"time" : 1})
を実行しようとしましたが、同じ名前の結果が重複しています。どのように私は各名前に最適な時間を得ることができますか?
あなたのクエリは、次の
db.results.aggregate(
{$group: {_id: '$person', besttime: {$min: "$time"}}}
{$sort: {besttime: 1}}
);
については流星のようなものになることをあなたが達成するためにMongoDB aggregation $minを使用することができます
「compName」を保持する方法はありますか? –
@OrangePeelは '$ group'ハッシュに追加されました。私は答えを編集しました –
@chridam確かに、答えに 'compName'にかかわらず答えがちょうど1つ必要な場合は正しいです。今質問を読んで、私はそれが欲しいものだと信じています...私の答えを今編集する、ありがとう –