Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengira Atribut Khusus Merentasi Pelbagai Tempat dengan Cekap di MongoDB menggunakan Go?

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

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-25 21:57:03462semak imbas

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"
             }
         }
     }
    }

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!

Kenyataan:
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