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

Barbara Streisand
リリース: 2024-11-06 22:29:02
オリジナル
623 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!