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

Hitung peristiwa dan masukkan string literal selama agregasi

anda dapat melakukan ini dengan agregasi seperti ini :

db.user.aggregate([
   {
      $match:{
         $and:[
            {
               timestamp:{
                  $gte: ISODate("2016-10-12T00:00:00.000Z")
               }
            },
            {
               timestamp:{
                  $lt: ISODate("2016-10-13T00:00:00.000Z")
               }
            }
         ]
      }
   },
   {
      $group:{
         _id:"$userId",
         timestamp:{
            $first:"$timestamp"
         },
         send_message:{
            $sum:{
               $cond:[
                  {
                     $eq:[
                        "$event_type",
                        "send_message"
                     ]
                  },
                  1,
                  0
               ]
            }
         },
         clicked_cancel:{
            $sum:{
               $cond:[
                  {
                     $eq:[
                        "$event_type",
                        "clicked_cancel"
                     ]
                  },
                  1,
                  0
               ]
            }
         },
         clicked_ok:{
            $sum:{
               $cond:[
                  {
                     $eq:[
                        "$event_type",
                        "clicked_ok"
                     ]
                  },
                  1,
                  0
               ]
            }
         }
      }
   },
   {
      $project:{
         date:{
            $dateToString:{
               format:"%Y-%m-%d",
               date:"$timestamp"
            }
         },
         userId:1,
         clicked_cancel:1,
         send_message:1,
         clicked_ok:1
      }
   }
])

penjelasan:

simpan hanya dokumen untuk hari tertentu di $match panggung

kelompokkan dokumen menurut userId dan hitung kemunculan untuk setiap peristiwa di $group panggung

akhirnya format bidang stempel waktu menjadi yyyy_MM-dd format dalam $project panggung

untuk data yang Anda berikan, ini akan menampilkan

{
   "_id":"123123123",
   "send_message":0,
   "clicked_cancel":1,
   "clicked_ok":1,
   "date":"2016-10-12"
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara menghapus banyak dokumen dalam koleksi yang dipartisi di Azure CosmosDB menggunakan API MongoDB

  2. Pilih dokumen yang memiliki pasangan nilai kunci tertentu tetapi tidak memiliki pasangan nilai kunci lainnya

  3. Bagaimana kami bisa memberikan kueri untuk dokumen yang disematkan melalui driver java?

  4. Grup MongoDB berdasarkan rentang durasi

  5. Menyinkronkan data server MongoDB ke toko lokal IndexedDB