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

Nilai total dari semua kunci dalam subdokumen

Tidak ada cara dalam kerangka agregasi mongodb untuk memperlakukan kunci di dalam dokumen sebagai data yang dapat Anda periksa atau manipulasi. Solusinya adalah mengubah apa yang Anda gunakan sebagai kunci di sini (mis. jenis buah dan nama toko) menjadi nilai seperti ini:

{
    "_id" : "doc1",
    "stores":[
        {
            // store name is a value
            "name":"store_A",
            "inventory": [
            {
                // so is fruit type
                "type" : "apple",
                "count" : 50
            },
            {
                "type" : "orange",
                "count" : 20
            }
            ]
        },
        {
            "name": "store_B",
            "inventory": [
            {
                "type" : "orange",
                "count" : 15
            }
            ]
        }
    ]
}

Ini memungkinkan Anda untuk bekerja dengan data ini dengan lebih mudah secara agregasi:

db.coll.aggregate([
    // split documents by store name
    {$unwind:"$stores"},
    // split documents further by fruit type
    {$unwind:"$stores.inventory"},
    // group documents together by store/fruit type, count quantities of fruit
    {$group:{"_id":{"store":"$stores.name", "fruit":"$stores.inventory.type"},
             "count":{$sum:"$stores.inventory.count"}}},
    // reformat the data to look more like your specification
    {$project:{
        "store":"$_id.store",
        "fruit":"$_id.fruit",
        "_id":0,
        "count":1}}])

Outputnya terlihat seperti:

{
    "result" : [
        {
            "count" : 15,
            "store" : "store_B",
            "fruit" : "apple"
        },
        {
            "count" : 15,
            "store" : "store_B",
            "fruit" : "orange"
        },
        {
            "count" : 30,
            "store" : "store_A",
            "fruit" : "orange"
        },
        {
            "count" : 50,
            "store" : "store_A",
            "fruit" : "apple"
        }
    ],
    "ok" : 1
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Menggunakan agregasi Mongo untuk menghitung jumlah nilai

  2. 3 Cara Menghapus Nilai dari Array di MongoDB

  3. cara mengelompokkan di mongoDB dan mengembalikan semua bidang dalam hasil

  4. Bagaimana saya harus mengimplementasikan skema ini di MongoDB?

  5. Penyimpanan File yang Dapat Diskalakan