Khi bạn có rất nhiều trường trong tài liệu con và đôi khi nó được cập nhật các trường mới, thì phép chiếu không phải là một lựa chọn khả thi. May mắn thay, kể từ ngày 3.4, MongoDB có một toán tử mới được gọi là $ ReplaceRoot .
Tất cả những gì bạn phải làm là thêm một giai đoạn mới vào cuối quy trình của mình.
db.getCollection('sample').aggregate([
{
$replaceRoot: {newRoot: "$command"}
},
{
$project: {score: 0 } //exclude score field
}
])
Điều này sẽ cung cấp cho bạn kết quả mong muốn.
Lưu ý rằng trong trường hợp tổng hợp (đặc biệt là sau $ nhóm stage) tài liệu 'lệnh' có thể là một mảng và có thể chứa nhiều tài liệu. Trong trường hợp này, bạn cần $ thư giãn mảng trước tiên để có thể sử dụng $ ReplaceRoot .