Bagaimana untuk Mengira Atribut Khusus Merentasi Pelbagai Tempat dengan Cekap di MongoDB menggunakan Go?

Mary-Kate Olsen
Lepaskan: 2024-10-25 21:57:03
asal
472 orang telah melayarinya

How to Efficiently Count Specific Attributes Across Multiple Venues in MongoDB using Go?

Dapatkan Senarai Item dengan Menyemak Berbilang Nilai Atribut dalam MongoDB dalam Go

Masalah:

Memandangkan struktur data JSON dengan senarai bersarang tempat dan atributnya, bagaimanakah anda mendapatkan semula kiraan atribut tertentu (mis., pengguna linux) untuk berbilang tempat? Sebagai contoh, anda ingin mengira bilangan pengguna linux untuk tempat dengan ID 'VID1212' dan 'VID4343'.

Penyelesaian:

Untuk mencapai ini dalam MongoDB, anda boleh menggunakan rangka kerja pengagregatan:

  1. $match: Tapis dokumen berdasarkan ID tempat yang ditentukan menggunakan operator $in.
  2. $unwind : Ratakan venueList bersarang dan tatasusunan jumlah untuk menyahnormalkan data.
  3. $match (aplikasi kedua): Tapis semula dokumen yang tidak digulung untuk mempertimbangkan hanya ID tempat yang diingini.
  4. $unwind (permohonan kedua): Teruskan membuka subdokumen jumlah bersarang.
  5. $group:** Kumpulkan dokumen berdasarkan medan **nama** daripada subdokumen jumlah dan agregat medan **nilai** menggunakan penumpuk **$sum.
  6. $cond: Gunakan ungkapan bersyarat untuk mencipta medan kiraan berasingan bagi setiap atribut yang diingini (cth., linux, ubuntu).

Untuk alternatif yang lebih fleksibel:

  1. Ganti peringkat pengagregatan terakhir dengan:

    { 
     "$group": {
         "_id": null,
         "counts": {
             "$push": {
                 "name": "$_id",
                 "count": "$count"
             }
         }
     }
    }
    Salin selepas log masuk

Kumpulan alternatif ini berdasarkan nama atribut dan menolak kiraan yang sepadan ke dalam tatasusunan.

Untuk pelaksanaan di Golang menggunakan mGo (v2), rujuk panduan di http:/ /godoc.org/labix.org/v2/mgo#Collection.Pipe.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Atribut Khusus Merentasi Pelbagai Tempat dengan Cekap di MongoDB menggunakan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!