Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

จัดกลุ่มตามสองคอลัมน์ใน MongoDB หรือไม่


หากต้องการจัดกลุ่มเป็นสองคอลัมน์ ให้ใช้ $lookup ให้เราสร้างคอลเลกชันที่มีเอกสาร -

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

แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -

> db.demo132.find();

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

{ "_id" :ObjectId("5e31950468e7f832db1a7f75"), "CountryName1" :"US", "CountryName2" :"UK", "Value" :50 }{ "_id" :ObjectId("5e31951d68e7f832db1a7 CountryName1" :"UK", "CountryName2" :"AUS", "Value" :10 }{ "_id" :ObjectId("5e31952c68e7f832db1a7f77"), "CountryName1" :"AUS", "CountryName2" :"US", " ค่า" :40 }

ต่อไปนี้เป็นแบบสอบถามเพื่อจัดกลุ่มตามสองคอลัมน์ใน MongoDB -

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

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

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