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

Grup Mongo dan jumlahkan dengan dua bidang

Karena Anda perlu menghitung jumlah email yang dipertukarkan antar 2 alamat, akan adil untuk memproyeksikan between terpadu kolom sebagai berikut:

db.a.aggregate([
    { $match: {
        to: { $exists: true },
        from: { $exists: true },
        email: { $exists: true }
    }}, 
    { $project: {
        between: { $cond: { 
            if: { $lte: [ { $strcasecmp: [ "$to", "$from" ] }, 0 ] }, 
            then: [ { $toLower: "$to" }, { $toLower: "$from" } ], 
            else: [ { $toLower: "$from" }, { $toLower: "$to" } ] }
        } 
    }},
    { $group: {
         "_id": "$between",
         "count": { $sum: 1 } 
    }},
    { $sort :{ count: -1 } }
])

Logika penyatuan harus cukup jelas dari contoh:ini adalah array yang diurutkan berdasarkan abjad dari kedua email. $match dan $toLower suku cadang bersifat opsional jika Anda memercayai data Anda.

Dokumentasi untuk operator yang digunakan dalam contoh:



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara menggabungkan hasil string dari beberapa catatan MongoDB menjadi satu hasil di MongoDB?

  2. perintah mongorestore mengganti catatan yang ada?

  3. Tidak dapat menanyakan mongoDB dengan luwak di node.js

  4. Node.js + Mongoose.js Bagaimana cara mendapatkan jumlah pesanan yang ditempatkan dalam sebulan atau seminggu?

  5. Bagaimana cara mengubah urutan array dengan MongoDB?