mongo聚合

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34376435/article/details/88865283

db.c.count() 返回集合中的文档数量
db.runCommand({“distince”:“c”,“key”:“age”}) 获得指定集合中给定键的不同值

db.test.group({
	$keyf:function(doc){return {age:doc.age};}, %%指定分组依据的键,也可以这样用:"key":"age"
	initial:{num:0},%%每一组reduce函数调用的初始数据
	$reduce:function(doc,prev){prev.num++}, 系统的两个参数,当前文档以及累加器文档,
	condition:{age:{$gt:2}}, 执行的过滤文档
	finalize:function(doc){doc.count=doc.num;delete doc.num} reduce完成后,结果集返回之前对结果集执行的最终函数,可选
})

使用mapreduce必须实现两个函数,Map函数和Reduce函数,map函数调用emit(key,value)遍历collection中所有记录,将key和value传递给Reduce函数进行处理。

参数说明:

  • map :映射函数 (生成键值对序列,作为 reduce 函数参数)。
  • reduce 统计函数,reduce函数的任务就是将key-values变成key-value,也就是把values数组变成一个单一的值value。。
  • out 统计结果存放集合 (不指定则使用临时集合,在客户端断开后自动删除)。
  • query 一个筛选条件,只有满足条件的文档才会调用map函数。(query。limit,sort可以随意组合)
  • sort 和limit结合的sort排序参数(也是在发往map函数前给文档排序),可以优化分组机制
  • limit 发往map函数的文档数量的上限(要是没有limit,单独使用sort的用处不大)
db.test.mapReduce(
	function() {emit(this.name,this.num)}, 
	function(key,values) {return Array.sum(values)},
	{query:{age:{"$gt":2}},out:"output"}
)

参考资料
参考资料

猜你喜欢

转载自blog.csdn.net/qq_34376435/article/details/88865283