När du har många, många fält i underdokumentet och ibland uppdateras det med nya fält, är projektion inte ett gångbart alternativ. Lyckligtvis, sedan 3.4, har MongoDB en ny operatör som heter $replaceRoot .
Allt du behöver göra är att lägga till ett nytt steg i slutet av din pipeline.
db.getCollection('sample').aggregate([
{
$replaceRoot: {newRoot: "$command"}
},
{
$project: {score: 0 } //exclude score field
}
])
Detta skulle ge dig önskad utdata.
Observera att vid aggregering (särskilt efter en $grupp steg) kan "kommando"-dokumentet vara en array och kan innehålla flera dokument. I det här fallet måste du $unwind arrayen först för att kunna använda $replaceRoot .