ホームページ >ウェブフロントエンド >jsチュートリアル >MongoDB でスコアの埋め込み配列を並べ替える方法は?

MongoDB でスコアの埋め込み配列を並べ替える方法は?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-06 22:29:02720ブラウズ

How to Sort an Embedded Array of Scores in 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。