对 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中文网其他相关文章!