MongoDB $ sort用法

时间:2014-04-04 03:07:30

标签: mongodb

这是我的数据库/文件。 运行:

db.Students.find().pretty()

结果是:

{
    "_id" : 1,
    "scores" : [
        {
            "attempt" : 1,
            "score" : 5
        },
        {
            "attempt" : 2,
            "score" : 10
        },
        {
            "attempt" : 3,
            "score" : 7
        },
        {
            "attempt" : 4,
            "score" : 9
        }
    ]
}

如何使用$sort降序显示分数?

1 个答案:

答案 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管道阶段负责重新安排订单。