Đối với điều này, hãy sử dụng tổng hợp (). 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.demo393.insertOne (... {... Id1:"1", ... Tên:"Chris", ... Id2:"100" ...} ...); { "inherit":true, "insertId":ObjectId ("5e5e6dd522064be7ab44e804")}> db.demo393.insertOne (... {... Id1:"1", ... Tên:"Chris", ... Id2 :"101" ...} ...); {"nition ":true," insertId ":ObjectId (" 5e5e6dd522064be7ab44e805 ")}> db.demo393.insertOne (... {... Id1:" 3 " , ... Tên:"Chris", ... Id2:"100" ...} ...); {"nition ":true," insertId ":ObjectId (" 5e5e6dd522064be7ab44e806 ")}> db.demo393. insertOne (... {... Id1:"3", ... Name:"Mike", ... Id2:"101" ...} ...); {"nition ":true," insertId ":ObjectId (" 5e5e6dd522064be7ab44e807 ")}
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.demo393.find ();
Điều này sẽ tạo ra kết quả sau -
{"_id":ObjectId ("5e5e6dd522064be7ab44e804"), "Id1":"1", "Tên":"Chris", "Id2":"100"} {"_id":ObjectId ("5e5e6dd522064be7ab44e805") , "Id1":"1", "Tên":"Chris", "Id2":"101"} {"_id":ObjectId ("5e5e6dd522064be7ab44e806"), "Id1":"3", "Tên":" Chris "," Id2 ":" 100 "} {" _id ":ObjectId (" 5e5e6dd522064be7ab44e807 ")," Id1 ":" 3 "," Tên ":" Mike "," Id2 ":" 101 "}
Sau đây là truy vấn để đối sánh chung phần giao nhau của các tài liệu với một trường -
> db.demo393.aggregate ([... {"$ match":{"Name":"Chris"}}, ... {"$ group":{... "_id":"$ Id1 ", ..." docs ":{" $ push ":" $$ ROOT "}, ..." count ":{" $ sum ":1} ...}}, ... {" $ khớp ":{..." count ":{" $ gt ":1}, ..." docs ":{..." $ all ":[... {" $ elemMatch ":{" Id2 " :"100"}}, ... {"$ elemMatch":{"Id2":"101"}} ...] ...} ...}} ...])
Điều này sẽ tạo ra kết quả sau -
{"_id":"1", "docs":[{"_id":ObjectId ("5e5e6dd522064be7ab44e804"), "Id1":"1", "Tên":"Chris", "Id2":" 100 "}, {" _id ":ObjectId (" 5e5e6dd522064be7ab44e805 ")," Id1 ":" 1 "," Tên ":" Chris "," Id2 ":" 101 "}]," count ":2}