0
私はmongodbを新しくしようとしていて、コレクションmytest1の中で最高のマークを持つ文書を引き出し、以下のクエリを作成しようとしています。キー値に基づいてドキュメントをソートしたりランク付けしたりしますか?
{
"_id" : ObjectId("5943b63496459374d40da429"),
"name" : "Person1",
"marks" : 20
},
{
"_id" : ObjectId("5943b65196459374d40da43a"),
"name" : "Person2",
"marks" : 20
},
{
"_id" : ObjectId("5943b65196459374d40da43c"),
"name" : "Person1",
"marks" : 30
},
{
"_id" : ObjectId("5943b6d696459374d40da47a"),
"name" : "Person1",
"marks" : 25
},
{
"_id" : ObjectId("5943b6d696459374d40da47c"),
"name" : "Person2",
"marks" : 50
},
{
"_id" : ObjectId("5943b6d696459374d40da47e"),
"name" : "Person1",
"marks" : 90
},
{
"_id" : ObjectId("5943b6d696459374d40da480"),
"name" : "Person3",
"marks" : 990
}
問合せ:
db.mytest1.aggregate([
{ $sort : { "name" : 1,"marks" : -1} },
{$group:
{
_id: "$name",
name: { $first: "$name" },
marks: { $first: "$marks" }
}}
])
- これを行うには良い方法はありますか?
- 私のシナリオでは、マークに基づいてドキュメントに番号を付けるのはどうすればできますか?
結果:
{"name" : "Person1","marks" : 30,"rank" : 1}
{"name" : "Person1","marks" : 25,"rank" : 2}
{"name" : "Person1","marks" : 20,"rank" : 3}
{"name" : "Person2","marks" : 50,"rank" : 1}
{"name" : "Person2","marks" : 20,"rank" : 2}
{"name" : "Person3","marks" : 990,"rank" : 3}