Computer >> Máy Tính >  >> Lập trình >> MongoDB

MongoDB Tổng hợp trường mảng JSON cho trường khớp của tập hợp khác?

Đố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":"Carol@gmail.com"} ...); {"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":"John@gmail.com"} {"_id":"201", "CustEmailId":"Carol@gmail.com"} 

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":"John@gmail.com"}, {"PId":"Carol@gmail.com"}, {"PId":"Carol@gmail.com"}]}