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

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

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-10 22:54:03676浏览

How to Sort an Embedded Array Field in MongoDB?

对 MongoDB 中的嵌套数组进行排序

问题:
如何对嵌套数组中的嵌入数组字段进行排序MongoDB 文档,例如学生集合中的分数数组?

建议的解决方案:
由于 Mongo 原生排序功能的限制,您需要使用应用程序代码或 MongoDB 聚合操作嵌入数组的框架。

聚合框架解决方案:
使用 MongoDB 聚合框架,您可以执行以下步骤对分数数组进行降序排序:

  1. 文档匹配:使用合适的索引(如果可用)匹配所需文档。
  2. 数组扩展:展开分数数组以创建一个流每个分数的文档。
  3. 类型过滤:过滤流以选择特定类型的分数(例如“作业”)。
  4. 排序: 按降序对分数进行排序。

聚合示例:

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

输出(示例):

{
    "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