Để thư giãn, có nghĩa là giải cấu trúc một trường mảng từ các tài liệu đầu vào để xuất ra một tài liệu cho mỗi phần tử.
Để giải phóng mảng, hãy sử dụng $ unwind trong tập hợp MongoDB. Trước tiên, hãy để chúng tôi tạo một bộ sưu tập với các tài liệu -
> db.demo387.insertOne (... {...... "Tên":"101", ... "Chi tiết1":[... {Giá trị:100, Giá trị1:50, Giá trị2:40}, ... {Giá trị:200}, ... {Giá trị:300} ...], ... "Chi tiết":[... {Giá trị:100, Giá trị1:30, Giá trị2:26}, ... {Value:200}, ... {Value:300} ...] ...} ...); {"Recognition":true, "insertId":ObjectId ("5e5d197022064be7ab44e7f8")}Hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find () -
> db.demo387.find (). khá ();Điều này sẽ tạo ra kết quả sau -
{"_id":ObjectId ("5e5d197022064be7ab44e7f8"), "Tên":"101", "Chi tiết1":[{"Giá trị":100, "Giá trị1":50, "Giá trị2":40}, {" Giá trị ":200}, {" Giá trị ":300}]," Chi tiết ":[{" Giá trị ":100," Giá trị1 ":30," Giá trị 2 ":26}, {" Giá trị ":200}, {" Giá trị ":300}]}Sau đây là truy vấn để tổng hợp tài liệu với nhiều hơn 1 mảng -
> db.demo387.aggregate ([... {"$ unwind":"$ Details1"}, ... {"$ unwind":"$ Details"}, ... {"$ match":{"$ expr":... {"$ eq":["$ Details1.Value", "$ Details.Value"]} ...}} ...])Điều này sẽ tạo ra kết quả sau -
{"_id":ObjectId ("5e5d197022064be7ab44e7f8"), "Tên":"101", "Chi tiết1":{"Giá trị":100, "Giá trị1":50, "Giá trị2":40}, "Chi tiết" :{"Value":100, "Value1":30, "Value2":26}} {"_id":ObjectId ("5e5d197022064be7ab44e7f8"), "Tên":"101", "Chi tiết1":{"Giá trị":200}, "Chi tiết":{"Giá trị":200}} {"_id":ObjectId ("5e5d197022064be7ab44e7f8"), "Tên":"101", "Chi tiết1":{"Giá trị":300}, "Chi tiết" :{"Giá trị":300}}