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}