mongodb mapreduce, aggregate, group 的类似功能

(1) 先定义map ,reduce函数

m = function () {

    emit(this.carrier, this.impCount);
};
r = function (key, values) {
    var x = 0;
    values.forEach(function (v) {x += v;});
    return x;
};


第一种命令,调用runCommand:

res = db.runCommand({
    mapreduce:"test_table",
    map:m,
    reduce:r,
    query : {
        '$or' : [{'impCount': {'$gt' : 3}},{'impCount': {'$lt' : 16}}],
},
    out:"students_res"
    });
    
第二中命令, 调用 mapreduce函数:
res = db.test_table.mapReduce(m,r,{
    query : {
         '$or' : [{'impCount': {'$gt' : 3}},{'impCount': {'$lt' : 16}}],
        },
    out:"students_res"

    }  );

(2) 

 var key1 =  { var1 : "$appid", var2 : "$os"}

var query1 = { '$or' : [{'impCount': {'$gt' : 3}},{'impCount': {'$lt' : 16}}] }
var sort1 =  { carrier: -1 }
var limit = 3

db.test_table.aggregate(
[
       { $match:  match1},
       { $group:  { _id: key1 , ImpCount: { $sum: "$impCount" }, ClickCount:{$sum: "$clickCount" }}},
       { $sort:   sort1},
       { $limit:  limit }
]
);

(3)

var key1 = {'carrier' : true};

var query1 = { '$or' : [{'impCount': {'$gt' : 16}},{'impCount': {'$lt' : 3}}] };

db.test_table.group({

     key : key1,

     cond: query1,

     reduce: function(obj,prev) { prev.msum += obj.impCount; },initial: {msum : 0}

}

);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值