mongodb聚合函数

官方介绍聚合函数:

http://docs.mongodb.org/manual/core/aggregation-introduction/

1、count

db.test.count();

2、distinct

db.runCommand(“distinct”: “table”, “key”: “age”);

3、group  最多只能处理上万个key

xxx = {

ns:”test_table”,

key:{id:true},

initial:{num:0},

$reduce:function(doc,prev)

{

prev.num++

},

condition:{id:{$gt:1}}

}

还可以增加 finalize 属性指定一个函数。对每组结果进行处理。。。。

db.test_table.group(xxx);

返回结果集

db.runCommand({group:xxx});

返回结构:

retVal 结果集

count 总记录数

keys 分组后的key数

ok 完成状态

4.mapReduce

不错的例子:

http://www.cnblogs.com/yuechaotian/archive/2013/02/21/2920254.html

实际操作演示:

db.test.insert({name:’a',num:5})

db.test.insert({name:’a',num:5})

db.test.insert({name:’a',num:5})

db.test.insert({name:’a',num:5})

db.test.insert({name:’b',num:3})

db.test.insert({name:’b',num:3})

db.test.insert({name:’b',num:3})

db.test.insert({name:’b',num:3})

db.test.insert({name:’b',num:3})

var map = function() {

    emit(this.name, {cnt: 1});

};

var reduce = function(key, values) {

var count = 0;

for (var i=0;i<values.length;i++){

      count+=values[i].cnt;

}

return count;

};

db.test.mapReduce(map, reduce, {out: “test_result”});

db.test_result.find()

{ “_id” : “a”, “value” : 4 }

{ “_id” : “b”, “value” : 5 }

var map = function() {

      emit(this.name, {cnt: this.num});

};

{ “_id” : “a”, “value” : 20 }

{ “_id” : “b”, “value” : 15 }

关于 Administrator

爱拼才会赢!
此条目发表在 Nosql 分类目录,贴了 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>