sql >> データベース >  >> NoSQL >> MongoDB

mongoのトップレベルドキュメントとしての集約/プロジェクトサブドキュメント

    サブドキュメントに非常に多くのフィールドがあり、場合によっては新しいフィールドで更新される場合、投影は実行可能なオプションではありません。幸い、3.4以降、MongoDBには $replaceRootという新しい演算子があります。

    パイプラインの最後に新しいステージを追加するだけです。

    db.getCollection('sample').aggregate([
        {
            $replaceRoot: {newRoot: "$command"}
        },
        {
            $project: {score: 0 } //exclude score field
        }
    ])
    

    これにより、目的の出力が得られます。

    集計の場合(特に $ group ステージ)「コマンド」ドキュメントは配列である可能性があり、複数のドキュメントを含む可能性があります。この場合、 $unwind を実行する必要があります。 アレイを最初に使用できるようにする $ replaceRoot >



    1. Mongotemplate-より大きい(gt)またはより小さい(lt)演算子に従ってObjectIdを照会します

    2. サブドキュメントから$sumを差し引く

    3. MongoDBの新しいC#ドライバー(非同期および待機)の変更点を理解する

    4. mongodbで最小値を見つける方法