MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Đếm sự kiện và chèn chuỗi ký tự trong quá trình tổng hợp

bạn có thể làm điều này với tổng hợp như thế này:

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
      }
   }
])

giải thích:

chỉ giữ tài liệu cho một ngày cụ thể trong $ match sân khấu

tài liệu nhóm theo userId và đếm số lần xuất hiện cho mỗi sự kiện trong $ group sân khấu

cuối cùng định dạng trường dấu thời gian thành yyyy_MM-dd định dạng trong $ project sân khấu

đối với dữ liệu bạn đã cung cấp, dữ liệu này sẽ xuất ra

{
   "_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. Làm cách nào để tìm kiếm một đối tượng bằng ObjectId của nó trong bảng điều khiển mongo?

  2. Tạo một cây JSON trong Node.Js từ MongoDB

  3. chúng ta có thể viết các truy vấn crud mongodb và truy vấn tổng hợp lại với nhau không?

  4. Tốc độ cập nhật Mongo

  5. setDate không đặt ngày đúng bên trong eval trong tập lệnh lô