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

MongoDB:Làm thế nào để đếm một trường nếu giá trị của nó phù hợp với một điều kiện?

Sử dụng đường dẫn tổng hợp sau:

db.click_log.aggregate([
    { "$match" : { "log.type" : { "$ne" : "emailed" } } }, // get rid of docs with an "emailed" value in log.type and docs not from this month
    { "$unwind" : "$log" }, // unwind to get log elements as separate docs
    { "$project" : { "_id" : 1, "log" : 1, "month" : { "$month" : "$log.utc_timestamp" } } },
    { "$match" : { "log" : "clicked", "month" : <# of month> } }, // get rid of log elements not from this month and that aren't type clicked
    { "$group" : { "_id" : "$_id", "count" : { "$sum" : 1 } } } // collect clicked elements from same original doc and count number
])

Điều này sẽ trả về, đối với mỗi tài liệu không có "được gửi qua email" dưới dạng giá trị của log.type , số lượng các phần tử của mảng loglog.type giá trị clicked và với dấu thời gian của tháng hiện tại. Nếu bạn muốn khoảng thời gian trượt 30 ngày trong tháng, hãy thay đổi $match là một truy vấn phạm vi với $gt$lt bao gồm khoảng thời gian mong muốn.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Xuất mô-đun cơ sở dữ liệu mongoose

  2. Tại sao các ObjectIds MongooseJS của tôi không thành công trong bài kiểm tra bình đẳng?

  3. Mongorestore trong Dockerfile

  4. Thiết lập dự án với Django 1.10, mongodb và Python 3.4.3

  5. Sử dụng MongoDB để lưu trữ dữ liệu bất biến?