这是我的数据库/文件。 运行:
db.Students.find().pretty()
结果是:
{
"_id" : 1,
"scores" : [
{
"attempt" : 1,
"score" : 5
},
{
"attempt" : 2,
"score" : 10
},
{
"attempt" : 3,
"score" : 7
},
{
"attempt" : 4,
"score" : 9
}
]
}
如何使用$sort
降序显示分数?
答案 0 :(得分:1)
嗯,你不能使用.find()
作为任何.sort()
修饰符,实际上是对文档进行排序而不是数组的内容。但是你可以使用.aggregate()
:
db.Students.aggregate([
// Unwind the array to de-normalize
{ "$unwind": "$scores" },
// Sort the documents with the scores descending
{ "$sort": { "_id": 1, "scores.score": -1 } },
// Group back to an array
{ "$group": {
"_id": "$_id",
"scores": { "$push": "$scores" }
}}
])
因此,一旦所有元素都被"去标准化"在单个文档中,$sort
管道阶段负责重新安排订单。