Sử dụng $unwind và $out trong Aggregation
$unwind bẻ mảng thành nhiều bản ghi, $out ghi kết quả vào collection mới.
Dữ liệu mẫu
> db.demo757.insertMany([
{ id: 101, Name: ["John", "Bob", "Chris"] },
{ id: 102, Name: ["David"] }
]);
Truy vấn biến đổi và xuất ra collection demo758
db.demo757.aggregate([
{ $unwind: "$Name" },
{ $project: { _id: 0 } },
{ $out: "demo758" }
]);
> db.demo758.find();
Kết quả collection mới
{ "_id": ObjectId("..."), "id": 101, "Name": "John" }
{ "_id": ObjectId("..."), "id": 101, "Name": "Bob" }
{ "_id": ObjectId("..."), "id": 101, "Name": "Chris" }
{ "_id": ObjectId("..."), "id": 102, "Name": "David" }
Mỗi phần tử mảng Name trở thành một bản ghi riêng biệt trong collection demo758.