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

Mongoでのビニングと集計(一意/カウント)

    MongoDBバージョン2.2(2.2.0-rc0がリリースされました)で利用できる新しい集約フレームワークを試しました。これは、Javascriptに依存しないため、mapreduceよりもパフォーマンスが高いはずです。

    入力データ:

    { "_id" : 1, "age" : 22.34, "gender" : "f" }
    { "_id" : 2, "age" : 23.9, "gender" : "f" }
    { "_id" : 3, "age" : 27.4, "gender" : "f" }
    { "_id" : 4, "age" : 26.9, "gender" : "m" }
    { "_id" : 5, "age" : 26, "gender" : "m" }
    

    性別の集計コマンド:

    db.collection.aggregate(
       {$project: {gender:1}},
       {$group: {
            _id: "$gender",
            count: {$sum: 1}
       }})
    

    結果:

    {"result" : 
       [
         {"_id" : "m", "count" : 2},
         {"_id" : "f", "count" : 3}
       ],
       "ok" : 1
    }
    

    ビンの年齢を取得するには:

    db.collection.aggregate(
       {$project: {
            ageLowerBound: {$subtract:["$age", {$mod:["$age",2]}]}}
       },
       {$group: {
           _id:"$ageLowerBound", 
           count:{$sum:1}
       }
    })
    

    結果:

    {"result" : 
        [
           {"_id" : 26, "count" : 3},
           {"_id" : 22, "count" : 2}
        ],
        "ok" : 1
    }
    


    1. ELBエンドポイントをDNSとして持つmongodbクラスター

    2. MongoDB-配列要素を更新またはプッシュするための$set

    3. ドキュメントインデックスがわからない場合にmongodb配列のネストされたレコードを更新する

    4. サブドキュメントに基づいてmongodbクエリ結果を並べ替える方法