首页 >web前端 >js教程 >如何对 MongoDB 中嵌入的分数数组进行排序?

如何对 MongoDB 中嵌入的分数数组进行排序?

Barbara Streisand
Barbara Streisand原创
2024-11-06 22:29:02719浏览

How to Sort an Embedded Array of Scores in MongoDB?

对 MongoDB 中集合记录中的数组进行排序

问题陈述

考虑以下集合MongoDB 中的学生记录,其中每条记录都包含一个嵌入的分数数组。任务是根据score值对scores数组进行降序排序。

解决方案

由于MongoDB查询语言的限制,直接操作内嵌数组在查询本身内是不可能的。要实现这种排序,您可以探索两种方法:

1。应用程序级排序

使用查找查询从集合中提取分数数组。在应用程序代码中按降序对分数数组进行排序。将排序后的分数数组的记录更新回 MongoDB。

2. MongoDB 聚合框架

利用 MongoDB 聚合框架,您可以在 MongoDB 本身内执行排序。以下是按降序对作业分数进行排序的示例聚合管道:

db.students.aggregate([
    { $match: { _id: 1 } },  // Initial document match
    { $unwind: '$scores' },  // Expand scores array into individual documents
    { $match: { 'scores.type': 'homework' } },  // Filter to homework scores
    { $sort: { 'scores.score': -1 } },  // Sort in descending order
])

示例输出:

{
    "result" : [
        {
            "_id" : 1,
            "name" : "Aurelia Menendez",
            "scores" : {
                "type" : "homework",
                "score" : 71.76133439165544
            }
        },
        {
            "_id" : 1,
            "name" : "Aurelia Menendez",
            "scores" : {
                "type" : "homework",
                "score" : 34.85718117893772
            }
        }
    ],
    "ok" : 1
}

以上是如何对 MongoDB 中嵌入的分数数组进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn