MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana Menghitung Grup Produk dengan nama Bidang di Monogodb?

Anda dapat memanfaatkan penggunaan $arrayToObject operator dalam serangkaian pipeline dan $replaceRoot pipa untuk mendapatkan hasil yang diinginkan.

Catatan :hubId dikonversi menjadi string selama operasi pipeline sebagai $arrayToObject operator berfungsi dengan baik jika nilai "kunci" adalah string. Jadi jika hubId adalah ObjectId maka $toString diperlukan saat $arrayToObject diterapkan.

Anda perlu menjalankan pipa agregat berikut:

Product.aggregate([
    {  "$group": {
            "_id": {
                "hubId": "$hubId",
                "status": "$ProductStatus"
            },
            "count": { "$sum": 1 }
    } },
    { "$group": {
        "_id": "$_id.hubId",
        "counts": {
            "$push": {
                "k": "$_id.status",
                "v": "$count"
            }
        }
    } },
    { "$group": {
        "_id": null,
        "counts": {
            "$push": {
                "k": { "$toString": "$_id" },
                "v": "$counts"
            }
        }
    } },
    { "$addFields": {
        "counts": {
            "$map": {
                "input": "$counts",
                "in": {
                    "$mergeObjects": [
                        "$$this",
                        { "v":  { "$arrayToObject": "$$this.v" } }
                    ]
                }
            }
        }
        
    } },
    {  "$replaceRoot": {
        "newRoot": { "$arrayToObject": "$counts" }
    } }  
])

yang menghasilkan dokumen hasil berikut:

{
    "xyz" : {
        "Delivered" : 1,
        "On the Way" : 1
    },
    "mlm" : {
        "On the Way" : 1,
        "Delivered" : 2
    },
    "yyy" : {
        "On the Way" : 1,
        "Delivered" : 1,
        "Cancelled" : 1
    }
}

Ini tentu saja tidak menghasilkan status lain yang memiliki hitungan nol tetapi solusinya bisa menjadi titik awal yang baik.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Apa cara terbaik untuk mengautentikasi dan mengotorisasi solusi web dan api seperti MERN Stack?

  2. Pencarian kunci tidak sensitif huruf MongoDB

  3. Masalah Kompas MongoDB dengan WSL2

  4. Konektor Percikan MongoDB py4j.protocol.Py4JJavaError:Terjadi kesalahan saat memanggil o50.load

  5. Google Cloud Mongo DB:IP Eksternal tidak terhubung