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

Jumlahkan semua nilai bidang dokumen bernama sama dalam koleksi

Anda dapat memanfaatkan $objectToArray dan $arrayToObject operator untuk membaca kunci objek Anda secara dinamis. Untuk menghilangkan _id dan name bidang yang dapat Anda $filter oleh $type .

db.collection.aggregate([
    {
        $project: {
            _id: 0,
            fields: {
                $filter: {
                    input: { $objectToArray: "$$ROOT" },
                    cond: { $eq: [ { $type: "$$this.v" }, "double" ] }
                }
            }
        }
    },
    {
        $unwind: "$fields"
    },
    {
        $group: {
            _id: "$fields.k",
            total: { $sum: "$fields.v" }
        }
    },
    {
        $group: {
            _id: null,
            aggregates: { $push: { k: "$_id", v: "$total" } }
        }
    },
    {
        $replaceRoot: {
            newRoot: { $arrayToObject: "$aggregates" }
        }
    }
])

Taman Bermain Mongo




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana menemukan array pada objek dokumen luwak?

  2. Bagaimana cara memuat data awal di MongoDB?

  3. kesalahan mongodb samar LEFT_SUBFIELD hanya mendukung Objek:statistik tidak:6

  4. MongoDB - Temukan dokumen yang cocok dengan kondisi tertentu untuk kunci bidang yang tidak diketahui

  5. Simpan mongoengine bidang referensi