1.count()函数返回集合中文档的数量
2.distinct找出给定键的所有不同的值。
> db.users.insert({"name":"Ada","age":20})
> db.users.insert({"name":"Fred","age":35})
> db.users.insert({"name":"Susan","age":60})
> db.users.insert({"name":"Andy","age":35})
> db.runCommand({"distinct":"users","key":"age"})
{
"values" : [
20,
35,
60
],
"stats" : {
"n" : 4,
"nscanned" : 4,
"nscannedObjects" : 4,
"timems" : 0
},
"ok" : 1
}
3.group选定分组所依据的键,而后将集合依据选定键值的不同分成若干组,然后通过聚合每一组内的文档,产生一个结果文档。
> db.users.insert({"name":"Ada","age":34,"dept":"A"})
> db.users.insert({"name":"Cada","age":24,"dept":"A"})
> db.users.insert({"name":"Eva","age":15,"dept":"A"})
> db.users.insert({"name":"Yousg","age":15,"dept":"B"})
> db.users.insert({"name":"Tesg","age":51,"dept":"B"})
> db.users.insert({"name":"Gdsg","age":21,"dept":"B"})
> db.users.insert({"name":"GSa","age":22,"dept":"C"})
> db.users.insert({"name":"Rea","age":32,"dept":"C"})
> db.users.insert({"name":"Jeea","age":36,"dept":"C"})
> db.runCommand({"group":{"ns":"users","key":"dept","initial":{"age":0},"$reduce
":function(doc,prev){if(doc.age>prev.age){prev.age=doc.age,prev.name=doc.name}}}
})
{
"retval" : [
{
"age" : 51,
"name" : "Tesg"
}
],
"count" : 9,//时间文档总数
"keys" : 1,//key有多少个不同的值,此处返回有误不知何原因?
"ok" : 1
}
上面例子中ns指定了集合名称,key指定分组key值,initial指定初始化值,$reduce 函数会传递两个参数,当前文档和累加器文档(本组当前的结果)
还可以使用如下的方式
> db.users.group({"key":"dept",initial:{"age":0},"$reduce":function(doc,prev){if
(doc.age>prev.age){prev.age=doc.age,prev.name=doc.name}}});
[ { "age" : 51, "name" : "Tesg" } ]
为什么我两种方式下得到的结果都是错误的?
4.使用完成器
在group函数中指定“finalize”函数,在每组结果传递到客户端之前被调用。
5.将函数作为键使用
在分组函数中使用“$keyf”指定一个函数处理键值。
6.MapReduce
例子一:找出集合中所有的键
> map=function(){for(var key in this){emit(key,{count:1})}};
function () {
for (var key in this) {
emit(key, {count:1});
}
}
> reduce=function(key,emits){var total=0;for(var i in emits){total+=emits[i].cou
nt;}return {"count":total};}
function (key, emits) {
var total = 0;
for (var i in emits) {
total += emits[i].count;
}
return {count:total};
}
> r1=reduce("x",[{count:1,id:3}])
{ "count" : 1 }
> mr=db.runCommand({"mapreduce":"users","map":map,"reduce":reduce,"out":"result.
txt"})
{
"result" : "result.txt", //结果对象
"timeMillis" : 31,//话费的时间
"counts" : {
"input" : 10,//发送到map函数的文档数
"emit" : 40,//函数emit调用的次数
"output" : 5//结果集合中创建的文档数量
},
"ok" : 1
}
> db[mr.result].find()
{ "_id" : "_id", "value" : { "count" : 10 } }
{ "_id" : "age", "value" : { "count" : 10 } }
{ "_id" : "dept", "value" : { "count" : 9 } }
{ "_id" : "name", "value" : { "count" : 10 } }
{ "_id" : "sex", "value" : { "count" : 1 } }
分享到:
相关推荐
11、MongoDB聚合操作及索引使用详解_ev.rar11、MongoDB聚合操作及索引使用详解_ev.rar11、MongoDB聚合操作及索引使用详解_ev.rar11、MongoDB聚合操作及索引使用详解_ev.rar11、MongoDB聚合操作及索引使用详解_ev.rar...
Mongodb聚合 mongodb的聚合函数使用方法
本书是一个小册子,简介明确的介绍了Mongodb聚合基本概念和操作,适合数据分析和财务管理人员入门使用,也适合于初学Mongodb的人员使用,字数不多,但是涵盖了Mongodb聚合框架的入门,常用的高级聚合,针对数据分析...
本文基于对“MongoDB聚合操作,索引”文档的深入分析,探讨了聚合操作如何优化数据处理流程,以及索引原理在实际应用中如何提升性能。通过具体实例,我们将了解MongoDB聚合框架的使用方法,包括各种聚合管道阶段(如...
MongoDB 聚合管道(Aggregation Pipeline) - 张善友 - 博客园
前言 今天开发同学向我们提...二是,实现这个功能MongoDB聚合感觉有些复杂,聚合要走好多步。 数据记录格式如下: 记录1 { "_id" : ObjectId("5c1e23eaa66bf62c0c390afb"), "_class" : "C1", "resourceUrl" : "/st
spring data mongodb 聚合 管道
mongo聚合框架aggregate使用,管道 $match 过滤数据,只输出符合结果的文档,$limit $skip 限制管道输出的结果个数 和 跳过制定数量的结果,并且返回剩下的结果
mongodb聚合学习使用文档
主要介绍了JAVA mongodb 聚合几种查询方式详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
MongoDB 聚合 MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似sql语句中的 count(*)。 aggregate() 方法 MongoDB中聚合的方法使用aggregate()。 语法 ...
meteor-aggregate, 对 Meteor的适当的MongoDB聚合支持 meteorhacks:aggregate为 Meteor 添加适当聚合支持的简单软件包。 这个包在 Mongo.Collection 实例上公开了 .aggregate 方法。这只在服务器端工作,没有...
Prometheus MongoDB查询导出器 用于MongoDB聚合查询导出器。特征支持量规指标推和推(仅MongoDB> = 3.6支持推) 支持多个MongoDB服务器Golang的公共API 公制缓存支持请注意,这并不是要替代来检测MongoDB内部。 此...
主要介绍了MongoDB聚合功能,需要的朋友可以参考下
声明式MongoDB聚合。 | | 包括什么? 仅在需要时自动进行$lookup 声明式管道生成 针对多集合查询进行了优化 使用SparrowQL的理由 创建SparrowQL的目的是使您对多集合查询的工作更加轻松和便捷。 SparrowQL是使...
使模型能够查询本地MongoDB聚合并根据结果构建实例。 强调 接受回送过滤器的功能和管道阶段,它将合并在单个已解析的管道中以进行汇总。 接受根目录中的关系字段,它将作为$ lookup阶段进行处理。 从Loopback...
主要为大家详细介绍了mongodb聚合的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
day4:教你学会MongoDB聚合操作 day5:索引的特性及应用 day6:MongoDB实例搭建仓位管理API day7:数据模型优化及设计 day8:复制集介绍及演练 day9:海量数据分片 day10:数据库认证与授权介绍及演练 day11:MongoDB数据库...