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

Nhóm qua hai cột trong MongoDB?

Để nhóm qua hai cột, hãy sử dụng $ lookup. Hãy để chúng tôi tạo một bộ sưu tập với các tài liệu -

> db.demo132.insertOne ({"CountryName1":"US", "CountryName2":"UK", Value:50}); {"Recognition":true, "insertId":ObjectId ("5e31950468e7f832db1a7f75") }> db.demo132.insertOne ({"CountryName1":"UK", "CountryName2":"AUS", Value:10}); {"Recognition":true, "insertId":ObjectId ("5e31951d68e7f832db1a7f76")}> db.demo132.insertOne ({"CountryName1":"AUS", "CountryName2":"US", Value:40}); {"Recog":true, "insertId":ObjectId ("5e31952c68e7f832db1a7f77")} 

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.demo132.find (); 

Điều này sẽ tạo ra kết quả sau -

 {"_id":ObjectId ("5e31950468e7f832db1a7f75"), "CountryName1":"US", "CountryName2":"Vương quốc Anh", "Giá trị":50} {"_id":ObjectId ("5e31951d68e7f832db1a7f76") CountryName1 ":" UK "," CountryName2 ":" AUS "," Value ":10} {" _id ":ObjectId (" 5e31952c68e7f832db1a7f77 ")," CountryName1 ":" AUS "," CountryName2 ":" US "," Giá trị ":40} 

Sau đây là truy vấn để nhóm qua hai cột trong MongoDB -

> db.demo132.aggregate ([... {... "$ lookup":{... "from":"demo132", ... "localField":"CountryName1", ... " ForeignField ":" CountryName2 ", ..." as ":" out "...} ...}, ... {..." $ unwind ":" $ out "...}, ... {... "$ project":{... "_id":0, ... "CountryName1":1, ... "total":{"$ sum":["$ Value", "$ out . Giá trị "]} ...} ...} ...]) 

Điều này sẽ tạo ra kết quả sau -

 {"CountryName1":"US", "total":90} {"CountryName1":"UK", "total":60} {"CountryName1":"AUS", "total":50}