Когато имате много, много полета в поддокумента и понякога той се актуализира с нови полета, тогава проекцията не е жизнеспособна опция. За щастие, от 3.4 MongoDB има нов оператор, наречен $replaceRoot .
Всичко, което трябва да направите, е да добавите нов етап в края на вашия конвейер.
db.getCollection('sample').aggregate([
{
$replaceRoot: {newRoot: "$command"}
},
{
$project: {score: 0 } //exclude score field
}
])
Това ще ви даде желания резултат.
Имайте предвид, че в случай на агрегиране (особено след $group етап) документът „команда“ може да бъде масив и може да съдържа множество документи. В този случай трябва да $unwind първо масива, за да можете да използвате $replaceRoot .