Đối với điều này, hãy tạo hai bộ sưu tập và thêm một số tài liệu. Sau đó, sử dụng $ lookup để tìm trận đấu. Hãy để chúng tôi tạo một bộ sưu tập với các tài liệu -
> db.demo101.insertOne (... {"_id":"1", "Chi tiết":[{"PId":"200"}, {"PId":"201"}, {"PId ":" 201 "}]} ...) {" Recognition ":true," insertId ":" 1 "}
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.demo101.find ();
Điều này sẽ tạo ra kết quả sau -
{"_id":"1", "Chi tiết":[{"PId":"200"}, {"PId":"201"}, {"PId":"201"}]}Sau đây là truy vấn để tạo bộ sưu tập thứ hai với một số tài liệu -
> db.demo102.insertOne (... {"_id":"201", "CustEmailId":"[email protected]"} ...); {"Recognition":true, "insertId":"201"}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.demo102.find ();Điều này sẽ tạo ra kết quả sau -
{"_id":"200", "CustEmailId":"[email protected]"} {"_id":"201", "CustEmailId":"[email protected]"}Sau đây là truy vấn để tổng hợp trường mảng JSON cho trường phù hợp của tập hợp khác -
> db.demo101.aggregate (... [... {$ unwind:"$ Details"}, ... {$ lookup:{from:"demo102", "localField":"Details.PId" , "ForeignField":"_ id", as:"out"}}, ... {$ project:{"_id":1, "Details.PId":{$ arrayElemAt:["$ out.CustEmailId", 0 ]}}}, ... {$ group:{_ id:"$ _ id", Chi tiết:{$ push:"$ Details"}}} ...] ...) .pretty ()Điều này sẽ tạo ra kết quả sau -
{"_id":"1", "Chi tiết":[{"PId":"[email protected]"}, {"PId":"[email protected]"}, {"PId":"[email protected]"}]}