1.count
db.user.find().count(); db.user.count(); db.user.count({"name": "路人甲0"});
2.distinct
//语法 db.collection.distinct( key ) //e.g. db.user.distinct("name");
3.group
//语法 db.collection.group( { [key|$keyf] : ...[, [cond/condition]: ...], initial: ..., reduce : ...[, finalize: ...] } ); db.runCommand({"group": { "ns": ..., [key|$keyf] : ...[, [cond/condition]: ...], initial: ..., $reduce : ...[, finalize: ...] }}); key: 分组依据的键 $keyf: 分组函数 cond/condition: 过滤条件 initial: 每一分组的初始化状态,将传递给reduce函数 reduce/$reduce: 累加器,系统会传递两个参数,当前文档和当前文档所属分组的累加结果 finalize: 对分组结果进行调整,参数为每个分组的累加结果 e.g. db.user.group({ "key": {"name": 1, "age": 1}, "cond": {"age": {"$gt": 3}}, "initial": {"count": 0}, "reduce": function(doc, result) { result.count++; } }); db.user.group({ "$keyf": function(doc) {return {"name": doc.name.substr(2)};}, "condition": {"age": {"$gt": 3}}, "initial": {"count": 0}, "reduce": function(doc, result) { result.count++; } }); db.user.group({ "key": {"name": 1}, "condition": {"age": {"$gt": 3}}, "initial": {"count": 0}, "reduce": function(doc, result) { result.count++; }, "finalize": function(result){ result.name = result.name.substr(2); } });
4.MapReduce
语法
db.collection.mapReduce( mapFunction , reduceFunction , <optional params> ); mapFunction: map函数 reduceFunction: reduce函数,一定要能被反复调用 <optional params>: --out: 存放结果的集合名 --query: 过滤条件 db.runCommand({"mapreduce": ..., "map": ..., "reduce": ...,, <optional params> }); mapreduce:集合名 map:map函数 reduce:reduce函数 <optional params>: --finalize --keeptemp:连接关闭时结果集合是否保存? --output:存放结果的集合名(隐含着keeptemp: true) --query: --sort:在发送map前是否先给文档排序 --limit:发往map函数的文档数量的上限 --scope:javascript中要用到的变量 --verbose:是否产生更加详尽的服务器日志
e.g.
db.user.mapReduce( function(){ for (var key in this) { emit(key, {"count": 1}); } }, function(key, values){ var count = 0; for (var value in values) { count++; } return {"count": count}; }, { "out": "key_count_temp", "query": {"age": {"$gt": 3}} });
结果:
{ "result" : "key_count_temp", "timeMillis" : 162, "counts" : { "input" : 50, "emit" : 250, "reduce" : 5, "output" : 5 }, "ok" : 1, } result:存放结果的集合名 timeMillis:操作花费的时间 counts: --input:发送到map函数的文档个数 --emit:在map函数中emit被调用的次数 --reduce:reduce被调用的次数 --output:结果集合中创建的文档数量
相关推荐
11、MongoDB聚合操作及索引使用详解_ev.rar11、MongoDB聚合操作及索引使用详解_ev.rar11、MongoDB聚合操作及索引使用详解_ev.rar11、MongoDB聚合操作及索引使用详解_ev.rar11、MongoDB聚合操作及索引使用详解_ev.rar...
接下来,我们将详细地探讨MongoDB聚合管道的相关知识点。 首先,从概念上理解,MongoDB的聚合管道可以类比为一个数据处理的“流水线”,每个阶段(Stage)可以看作是流水线上的一个节点,文档会按顺序地通过这些...
### MongoDB 聚合框架详解 #### 概述 MongoDB 的聚合框架是数据库系统中一个强大而灵活的功能,用于处理复杂的数据分析需求。通过一系列的管道操作(pipeline stages),可以实现对数据集进行筛选、分组、计算等...
本书“MongoDB 聚合实战:数据分析与财务应用轻松入门”是为初学者和专业人士设计的一份指南,旨在帮助读者快速理解并应用 MongoDB 的聚合功能。 在第一部分,书中介绍了 MongoDB 的基础知识。从聚合的魅力开始,...
MongoDB中的聚合框架是一个强大且灵活的数据处理工具,它允许用户对存储在数据库中的数据执行各种操作,从简单的数据聚合到复杂的文本处理和数组操作等。 聚合框架的主要组成部分是管道(pipeline),它由多个处理...
**一、MongoDB聚合** 聚合是MongoDB中处理数据的一种方式,允许用户对集合中的数据进行分析和计算,类似于SQL中的GROUP BY操作。聚合框架包括多个阶段,如`$match`(过滤数据)、`$group`(分组数据)、`$sort`...
mongodb聚合学习使用文档
JAVA mongodb 聚合查询方式详解 聚合查询是 MongoDB 中的一种强大查询方式,通过对数据进行分组、过滤、排序等操作,可以快速地获取所需的数据。在 JAVA 中使用 MongoDB 时,通常使用 Spring Data MongoDB 框架来...
在Spring Data MongoDB中,聚合(Aggregation)是用于处理数据集合的一种强大工具,它允许开发者进行数据统计、分析和汇总。本篇文章将详细介绍如何利用Spring Data MongoDB API进行聚合查询,并提供一个具体的步骤...
总结起来,MongoDB的聚合框架在处理复杂的数据分析任务时提供了强大功能,但在这个特定场景下,由于MongoDB聚合框架的限制,需要通过额外的处理步骤来实现目标。在实际应用中,应尽可能优化查询策略,减少数据处理的...
meteor-aggregate, 对 Meteor的适当的MongoDB聚合支持 meteorhacks:aggregate为 Meteor 添加适当聚合支持的简单软件包。 这个包在 Mongo.Collection 实例上公开了 .aggregate 方法。这只在服务器端工作,没有...
MongoDB是一个基于文档的NoSQL数据库,由C++语言编写,旨在为大量分布式数据提供高性能、高可用性和高灵活性的数据存储解决方案。...7. **灵活的聚合框架**:MongoDB的聚合框架允许用户执行复杂的数
Prometheus MongoDB查询导出器 用于MongoDB聚合查询导出器。特征支持量规指标推和推(仅MongoDB> = 3.6支持推) 支持多个MongoDB服务器Golang的公共API 公制缓存支持请注意,这并不是要替代来检测MongoDB内部。 此...
JavaScript中的MongoDB聚合管道实现,即`js-pipes`,是一种用纯JavaScript代码模拟MongoDB数据库的聚合框架功能。在MongoDB中,聚合管道是一种强大的工具,用于处理和分析数据集合,提供了一种类似Unix管道的方式,...
声明式MongoDB聚合。 | | 包括什么? 仅在需要时自动进行$lookup 声明式管道生成 针对多集合查询进行了优化 使用SparrowQL的理由 创建SparrowQL的目的是使您对多集合查询的工作更加轻松和便捷。 SparrowQL是使...
本教程将详细介绍MongoDB聚合框架的基本概念和常用操作符,帮助你快速入门。 聚合框架的工作原理是通过创建一个“管道”(pipeline),这个管道由一系列处理阶段(stages)组成,每个阶段都会对输入文档进行操作并...
使模型能够查询本地MongoDB聚合并根据结果构建实例。 强调 接受回送过滤器的功能和管道阶段,它将合并在单个已解析的管道中以进行汇总。 接受根目录中的关系字段,它将作为$ lookup阶段进行处理。 从Loopback...