サブドキュメントに非常に多くのフィールドがあり、場合によっては新しいフィールドで更新される場合、投影は実行可能なオプションではありません。幸い、3.4以降、MongoDBには $replaceRootという新しい演算子があります。 。
パイプラインの最後に新しいステージを追加するだけです。
db.getCollection('sample').aggregate([
{
$replaceRoot: {newRoot: "$command"}
},
{
$project: {score: 0 } //exclude score field
}
])
これにより、目的の出力が得られます。
集計の場合(特に $ group ステージ)「コマンド」ドキュメントは配列である可能性があり、複数のドキュメントを含む可能性があります。この場合、 $unwind
を実行する必要があります。 アレイを最初に使用できるようにする