我正在学习MongoDB的排序。我有一个包含如下文档的集合:
{
"_id" : ObjectId("5d0c13fbfdca455311248d6f"),
"borough" : "Brooklyn",
"grades" :
[
{ "date" : ISODate("2014-04-16T00:00:00Z"), "grade" : "A", "score" : 5 },
{ "date" : ISODate("2013-04-23T00:00:00Z"), "grade" : "B", "score" : 2 },
{ "date" : ISODate("2012-04-24T00:00:00Z"), "grade" : "A", "score" : 4 }
],
"name" : "C & C Catering Service",
"restaurant_id" : "40357437"
}
我想按布鲁克林的所有餐厅的最新得分排序。
现在我有:
db.restaurants.find({borough: "Brooklyn"}).sort()
但是我不知道如何进行。对如何按照最新分数(成绩中的第一项)进行排序有帮助吗?
答案 0 :(得分:0)
在mongo中使用find查询是不可能的,您必须使用这样的聚合:
db.collection.aggregate([
{
$unwind: "$grades"
},
{
$sort: {"grades.date": -1}
},
{
$group: {
_id:"$_id",
grades: {$push:"$grades"},
resturant_id: {$first: "$resturant_id",
name: {$first: "$name"},
borough: {$first: "$borough"}
}
}
]);
编辑:
collection.find({}).sort({'grades.0.date': -1});