sql >> データベース >  >> NoSQL >> MongoDB

MongoDBの条件によるグループ化

    集約フレームワークはあなたが望むものです:

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

    したがって、最初に日付集計演算子を使用してその日にグループ化し、特定の日のアイテムのtotalCountを取得します。 $condの使用 ここでの演算子は、「ステータス」が実際に欠陥であるかどうかを判断し、結果は条件付きの $sum ここでは、「欠陥」の値のみがカウントされます。

    それらが1日ごとにグループ化されると、単に $divide 結果、 $condを使用した別のチェック ゼロで除算していないことを確認します。



    1. Redisで有効期限が切れていないキーを見つける

    2. Redisを使用して第2レベルのキャッシュを休止状態にします-パフォーマンスが向上しますか?

    3. mongoDBでユーザーが費やした合計時間を検索します

    4. セカンダリインデックスでのRedisサポート