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

Nhóm theo tình trạng trong MongoDB

Khung tổng hợp là những gì bạn muốn:

db.collection.aggregate([
    { "$group": {
        "_id": {
            "year": { "$year": "$utc_timestamp" },
            "month": { "$month": "$utc_timestamp" },
            "day": { "$dayOfMonth": "$utc_timestamp" },
        },
        "defects": {
            "$sum": { "$cond": [
                { "$eq": [ "$status", "defect" ] },
                1,
                0
            ]}
        },
        "totalCount": { "$sum": 1 }
    }},
    { "$project": {
        "defect_rate": {
            "$cond": [
                { "$eq": [ "$defects", 0 ] },
                0,
                { "$divide": [ "$defects", "$totalCount" ] }
            ]
        }
    }}
])

Vì vậy, trước tiên, bạn nhóm vào ngày bằng cách sử dụng các toán tử tổng hợp ngày và nhận được Tổng số lượng các mục vào ngày nhất định. Việc sử dụng $cond toán tử ở đây xác định xem "trạng thái" có thực sự là một khiếm khuyết hay không và kết quả là một $sum có điều kiện trong đó chỉ các giá trị "lỗi" mới được tính.

Khi chúng được nhóm lại mỗi ngày, bạn chỉ cần $divide kết quả, với một séc khác với $cond để đảm bảo rằng bạn không chia hết cho số 0.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Giao dịch Mongodb v4.0, MongoError:Số giao dịch chỉ được phép trên một thành viên hoặc mongos đặt bản sao

  2. Loại bỏ database.yml khi sử dụng Mongoid trong Rails 3.2

  3. Các phương thức find () và findOne () trong MongoDB hiển thị các kết quả khác nhau

  4. mongodb - Tìm tài liệu có giá trị số nguyên gần nhất

  5. Chuyển đổi MongoDB BsonDocument thành JSON hợp lệ trong C #