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

kerangka kerja agregasi mongodb - hasilkan _id dari fungsi

Seperti pada MongoDB 2.4, Anda tidak dapat mengimplementasikan fungsi kustom apa pun di Kerangka Agregasi. Jika Anda ingin $group oleh satu atau beberapa bidang, Anda perlu menambahkannya melalui operator dan ekspresi agregasi atau melalui pembaruan eksplisit() jika Anda tidak ingin menghitung setiap waktu.

Menggunakan Kerangka Agregasi, Anda dapat menambahkan bucket yang dihitung bidang dalam $project langkah pipa dengan $cond operator .

Berikut adalah contoh penghitungan rentang berdasarkan numberField yang kemudian dapat digunakan dalam $group pipa untuk sum/avg/etc:

db.data.aggregate(
    { $project: {
        numberfield: 1,
        someotherfield: 1,
        bucket: {
            $cond: [ {$and: [ {$gte: ["$numberfield", 1]}, {$lte: ["$numberfield", 20]} ] }, '1-20', {
            $cond: [ {$lt: ["$numberfield", 41]},  '21-40',  {
            $cond: [ {$lt: ["$numberfield", 61]},  '41-60',  {
            $cond: [ {$lt: ["$numberfield", 81]},  '61-80',  {
            $cond: [ {$lt: ["$numberfield", 101]}, '81-100', '100+' ]
            }]}]}]}]
        }
    }},
    { $group: {
        _id: "$bucket",
        sum: { $sum: "$someotherfield" }
    }}
)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara/tempat yang disarankan untuk membuat indeks pada koleksi MongoDB untuk aplikasi web

  2. Cast to Number gagal untuk nilai NaN (nomor tipe) di jalur pada bidang yang dihitung Mongoose

  3. Menggunakan fungsionalitas Mongoose / MongoDB $addToSet pada array objek

  4. Tidak dapat mengimpor json di MongoDB

  5. MongoDB $weeklyUpdate #65 (15 April 2022):Waktu GDELT, Mongoose, &Hackathon!