Si votre tableau de sous-documents que vous souhaitez omettre n'est pas très grand. Je voudrais juste le supprimer du côté de l'application. Faire du traitement dans MongoDB signifie que vous choisissez d'utiliser les ressources de calcul de MongoDB au lieu de votre application. En règle générale, votre application est plus facile et moins chère à mettre à l'échelle, il est donc préférable de l'implémenter au niveau de la couche d'application.
Mais dans ce cas précis, il n'est pas trop complexe de l'implémenter dans MongoDB :
db.collection.aggregate([
{
$addFields: { // keep the first element somewhere
first: { $arrayElemAt: [ "$mainArray", 0] }
}
},
{
$project: { // remove the subdocument field
"mainArray.array": false
}
},
{
$addFields: { // join the first element with the rest of the transformed array
mainArray: {
$concatArrays: [
[ // first element
"$first"
],
{ // select elements from the transformed array except the first
$slice: ["$mainArray", 1, { $size: "$mainArray" }]
}
]
}
}
},
{
$project: { // remove the temporary first elemnt
"first": false
}
}
])