Thách thức chính là bạn muốn tất cả các trường từ tài liệu chính (vì bạn không biết tất cả chúng) cộng với chỉ 2 từ danh sách.
Điều này nên làm điều đó:
{
$project: {
"_id": 0,
"document": "$$CURRENT",
"list._id": "$$CURRENT.list._id",
"list.name": "$$CURRENT.list.name"
}
}, {
$project: {
"document.list": 0
}
}, {
$addFields: {
"document.list._id": "$$CURRENT.list._id",
"document.list.name": "$$CURRENT.list.name"
}
}, {
$replaceRoot: {
newRoot: "$document"
}
}
Nó trải qua một vài giai đoạn nhưng hoàn thành công việc :). Nó sẽ lấy tài liệu hiện tại và chỉ các trường danh sách bạn muốn. Sau đó, nó sẽ xóa khỏi tài liệu hiện tại trong danh sách của nó. Sau đó, nó sẽ thêm vào cùng tài liệu đó danh sách (vì tài liệu đó có các trường cụ thể mà chúng tôi muốn). Sau đó, nó sẽ thêm các trường đó vào tài liệu và cuối cùng nó sẽ thay thế gốc bằng tài liệu đó.