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

ある範囲にわたるMongoDB集約

    何をしたいのかを正確に理解している限り、集計を使用して、ソースドキュメントから計算できるあらゆるものでグループ化できます。

    ドキュメントの内容とサンプル出力に基づいて、2日間隔で合計していると思います。これをサンプルデータに出力するための集計を作成する方法は次のとおりです。

    var range1={$and:[{"$gte":["$date","2014-07-07"]},{$lte:["$date","2014-07-08"]}]}
    var range2={$and:[{"$gte":["$date","2014-07-09"]},{$lte:["$date","2014-07-10"]}]}
    db.range.aggregate(
        {$project:{
             dateRange:{$cond:{if:range1, then:"dateRange1",else:{$cond:{if:range2, then:"dateRange2", else:"NotInRange"}}}},
             value:1}
        }, 
        {$group:{_id:"$dateRange", sum:{$sum:"$value"}}}
    )
    { "_id" : "dateRange2", "sum" : 45 }
    { "_id" : "dateRange1", "sum" : 49 }
    

    range1とrange2の文字列を日付に置き換えます。オプションで、集計対象の全範囲にすでにあるドキュメントのみの操作を開始する前にフィルタリングできます。




    1. 2レベルの不明な親キーを使用したMongoクエリのネストされたフィールド値

    2. Redisのパスワードを設定するにはどうすればよいですか?

    3. 127.0.0.1:27017への接続に失敗しました。理由:errno:111接続が拒否されました

    4. 配列内の外部_idを使用したMongoDb集約$lookup