Jika array subdocument Anda yang ingin Anda hilangkan tidak terlalu besar. Saya hanya akan menghapusnya di sisi aplikasi. Melakukan pemrosesan di MongoDB berarti Anda memilih untuk menggunakan sumber daya komputasi MongoDB daripada aplikasi Anda. Umumnya aplikasi Anda lebih mudah dan lebih murah untuk diskalakan, jadi implementasi pada lapisan aplikasi lebih disukai.
Tetapi dalam kasus yang tepat ini tidak terlalu rumit untuk mengimplementasikannya di 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
}
}
])