ホームページ > 記事 > ウェブフロントエンド > MongoDB でスコアの埋め込み配列を並べ替える方法は?
MongoDB のコレクション レコード内の配列の並べ替え
問題ステートメント
次のコレクションを考えますMongoDB 内の生徒のレコード。各レコードにはスコアの埋め込み配列が含まれます。タスクは、スコア値に基づいてスコア配列を降順に並べ替えることです。
解決策
MongoDB のクエリ言語の制限により、埋め込み配列を直接操作するクエリ自体内では不可能です。この並べ替えを実現するには、次の 2 つのアプローチを検討できます。
1.アプリケーションレベルの並べ替え
検索クエリを使用してコレクションからスコア配列を抽出します。アプリケーション コード内でスコア配列を降順に並べ替えます。ソートされたスコア配列を使用してレコードを更新して MongoDB に戻します。
2. MongoDB Aggregation Framework
MongoDB Aggregation Framework を利用すると、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 中国語 Web サイトの他の関連記事を参照してください。