Dapatkan Senarai Item dengan Menyemak Berbilang Nilai Atribut dalam MongoDB
Apabila bekerja dengan MongoDB, selalunya menjadi perlu untuk mendapatkan semula item tertentu berdasarkan berbilang nilai atribut, serupa dengan keadaan IN yang digunakan dalam MySQL. Artikel ini menunjukkan cara untuk mencapai perkara ini menggunakan gabungan operasi saluran paip dalam MongoDB.
Rangka Kerja Pengagregatan
Dalam senario ini, kami akan menggunakan rangka kerja pengagregatan untuk membina saluran paip yang menapis dan mengagregat data daripada koleksi MongoDB yang dikenali sebagai "venueList." Matlamatnya ialah untuk mendapatkan semula jumlah kiraan pengguna dengan sistem pengendalian tertentu, seperti Linux atau Ubuntu, berdasarkan senarai ID tempat.
Peringkat Saluran Paip
The saluran paip terdiri daripada beberapa peringkat yang bekerjasama untuk mengubah dan meringkaskan data:
Output Jangkaan
Output akhir saluran paip pengagregatan akan dokumen yang mengandungi jumlah bilangan pengguna Linux dan Ubuntu merentas ID tempat yang ditentukan:
<code class="json">{ "_id": null, "linux": 14, "ubuntu": 4 }</code>
Pelaksanaan Go
Untuk menggunakan saluran paip ini dalam Go menggunakan pakej mgo , anda boleh ikut langkah ini:
<code class="go">query := []bson.M{ {"$match": bson.M{"venueList.id": bson.M{"$in": []string{"VID1212", "VID4343"}}}}, {"$unwind": "$venueList"}, {"$match": bson.M{"venueList.id": bson.M{"$in": []string{"VID1212", "VID4343"}}}}, {"$unwind": "$venueList.sum"}, { "$group": bson.M{ "_id": nil, "linux": bson.M{"$sum": bson.M{"$cond": []interface{}{bson.M{"$eq": []interface{}{"$venueList.sum.name", "linux"}}, "$venueList.sum.value", 0}}}, "ubuntu": bson.M{"$sum": bson.M{"$cond": []interface{}{bson.M{"$eq": []interface{}{"$venueList.sum.name", "ubuntu"}}, "$venueList.sum.value", 0}}}, }, }, }</code>
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kiraan Item Berdasarkan Berbilang Nilai Atribut dalam MongoDB menggunakan Agregasi Pipeline?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!