ホームページ > ウェブフロントエンド > jsチュートリアル > MongoDB で埋め込み配列フィールドをソートするにはどうすればよいですか?

MongoDB で埋め込み配列フィールドをソートするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-10 22:54:03
オリジナル
667 人が閲覧しました

How to Sort an Embedded Array Field in MongoDB?

MongoDB でのネストされた配列の並べ替え

問題:
埋め込み配列フィールドをどのように並べ替えますか? MongoDB ドキュメント (学生のスコア配列など) collection?

提案された解決策:
Mongo のネイティブ ソート機能には制限があるため、埋め込み配列を操作するにはアプリケーション コードまたは MongoDB 集約フレームワークを使用する必要があります。

集約フレームワーク ソリューション:
MongoDB の使用集計フレームワークでは、次の手順を実行してスコア配列を降順に並べ替えることができます:

  1. ドキュメントの一致: 利用可能な場合は、適切なインデックスを使用して目的のドキュメントを一致させます。
  2. 配列拡張: スコア配列を巻き戻して、スコアごとにドキュメントのストリームを作成します。スコア。
  3. ​​
  4. タイプ フィルタリング: ストリームをフィルタリングして、特定のタイプ (例: 「宿題」) のスコアを選択します。
  5. 並べ替え: 並べ替えスコアは降順でorder.

集計例:

db.students.aggregate([
    // Initial document match
    { $match: {
        _id : 1
    }},
    // Expand scores array
    { $unwind: '$scores' },
    // Filter homework scores
    { $match: {
        'scores.type': 'homework'
    }},
    // Sort in descending order
    { $sort: {
        'scores.score': -1
    }}
])
ログイン後にコピー

出力 (サンプル):

{
    "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 までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート