Nếu mảng tài liệu con của bạn mà bạn muốn bỏ qua không lớn lắm. Tôi sẽ chỉ xóa nó ở phía ứng dụng. Thực hiện xử lý trong MongoDB có nghĩa là bạn chọn sử dụng tài nguyên tính toán của MongoDB thay vì ứng dụng của bạn. Nói chung, ứng dụng của bạn mở rộng quy mô dễ dàng hơn và rẻ hơn, vì vậy việc triển khai ở lớp ứng dụng được ưu tiên hơn.
Nhưng trong trường hợp chính xác này, không quá phức tạp để triển khai nó trong 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
}
}
])