對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中文網其他相關文章!