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

Bagaimana cara menjumlahkan setiap bidang dalam sub dokumen MongoDB?

Anda telah membuat kesalahan klasik untuk memiliki nama bidang yang berubah-ubah. MongoDB "bebas skema", tetapi itu tidak berarti Anda tidak perlu memikirkan skema Anda. Nama kunci harus deskriptif, dan dalam kasus Anda, f.e. "S2" sebenarnya tidak berarti apa-apa. Untuk melakukan sebagian besar jenis kueri dan operasi, Anda perlu mendesain ulang skema untuk menyimpan data Anda seperti ini:

_id:...
Segment:[
    { field: "S1", value: 1 },
    { field: "S2", value: 5 },
    { field: "Sn", value: 10 },
]

Anda kemudian dapat menjalankan kueri Anda seperti:

db.collection.aggregate( [
    { $unwind: "$Segment" },
    { $group: {
        _id: '$_id', 
        sum: { $sum: '$Segment.value' } 
    } } 
] );

Yang kemudian menghasilkan sesuatu seperti ini (dengan satu-satunya dokumen dari pertanyaan Anda):

{
    "result" : [
        {
            "_id" : ObjectId("51e4772e13573be11ac2ca6f"),
            "sum" : 16
        }
    ],
    "ok" : 1
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bisakah mongodb digunakan sebagai basis data tertanam?

  2. Mencocokkan ObjectId ke String untuk $graphLookup

  3. 'Transaksi' multi-koleksi, multi-dokumen di MongoDB

  4. mongo:pengembalian tidak sama dengan hitungan ()

  5. Pulihkan Basis Data MongoDB menggunakan mongorestore