在aggregate只能通过$group中的$sum来进行统计,如果sales表中有下面数据:
{ "_id" : { "month" : 3, "day" : 15, "year" : 2014 }, "totalPrice" : 50, "averageQuantity" : 10, "count" : 1 }
{ "_id" : { "month" : 4, "day" : 4, "year" : 2014 }, "totalPrice" : 200, "averageQuantity" : 15, "count" : 2 }
{ "_id" : { "month" : 3, "day" : 1, "year" : 2014 }, "totalPrice" : 40, "averageQuantity" : 1.5, "count" : 2 }
如果要得到count总记录数该怎么做呢?
我们可以通过:
db.sales.aggregate(
[
{
$group : {
_id : null,
totalPrice: { $sum: { $multiply: [ "$price", "$quantity" ] } },
averageQuantity: { $avg: "$quantity" },
count: { $sum: 1 }
}
}
]
)
即可得到,id:null这个非常关键
得到如下结果:
{ "_id" : null, "totalPrice" : 290, "averageQuantity" : 8.6, "count" : 5 }
java代码可以通过如下
DBObject count = new BasicDBObject("$sum",1);
DBObject groupFileds = new BasicDBObject("_id", null);
groupFileds.put("count", count);
DBObject group = new BasicDBObject("$group", groupFileds);
AggregationOutput output = collection.aggregate(Arrays.asList(group));
List<DBObject> dbObjects = (List<DBObject>) output.results();
int count = (int) dbObjects.get(0).get("count");
这里干嘛不直接用mongodb的count,这是因为如果在这个统计中如果有根据地理空间距离查找的要求,那么就不满足要求了,所以改用aggregate进行统计是个不错的选择
分享到:
相关推荐
在本题中,我们将探讨 MongoDB 的查询操作,基于提供的 `user1` 和 `user2` 文档进行练习。 首先,让我们熟悉一下 `db.users.drop()` 命令。这个命令用于删除集合 `users`,如果存在的话。在 MongoDB 中,集合是...
在这个“php代码-mongodb aggregate sample”的示例中,我们将深入探讨如何使用PHP与MongoDB的`aggregate`函数进行数据聚合。 首先,让我们了解`aggregate`的基本概念。MongoDB的`aggregate`方法接受一个数组参数,...
在MongoDB中,聚合是用于处理数据记录并返回计算结果的过程,通常用于汇总数据、进行统计分析或者生成分组报告。本资料主要涉及MongoDB中的简单聚合函数,包括`count`、`distinct`和`group`等。 1. **count** 函数...
在处理大量数据时,我们常常需要对数据进行分组统计,以便进行聚合操作,例如计算总数、平均值、最大值、最小值等。在C#中操作MongoDB,我们可以利用驱动程序提供的功能来实现这一目的。 MongoDB的分组功能主要通过...
在本篇中,我们将深入探讨MongoDB中的核心操作:增(添加)、删(删除)、改(修改)和查(查询),并结合具体的项目代码来帮助你理解这些概念。 ### 增(Add) 在MongoDB中,增加数据通常涉及创建新的文档并将其...
在分片集群(Sharded Clusters)中,group聚合函数不适用,应使用mapReduce或aggregate方法。覆盖查询(Covered Queries)在分片集群下要求查询条件包含shard key,否则无法利用索引来提高性能。对于已分片的collections...
除了基本的CRUD操作,MongoDB还提供了聚合框架,允许进行复杂的查询和数据处理,例如计算总数、分组统计等。在C#中,可以使用`Aggregate`方法结合`PipelineStageDefinition`构建聚合管道。 总的来说,C#操作MongoDB...
在MongoDB 3.2版本中,引入了更多高级功能和优化,包括更强大的聚合框架,以支持复杂的数据分析。C#驱动程序2.0是针对.NET开发者的重要工具,它提供了与MongoDB服务器通信的接口,支持异步操作,提高了应用的并发...
在MongoDB中,聚合操作类似于SQL中的GROUP BY和聚合函数,但提供了更强大的数据处理能力。 `aggregate()` 方法是执行聚合操作的主要接口,它的基本语法如下: ```javascript db.COLLECTION_NAME.aggregate...
在MongoDB中,掌握特定的命令是进行数据管理的关键。以下是对MongoDB中`map-reduce`和`aggregate`两个重要功能的详细解释。 ### 1. Map-Reduce Map-Reduce是一种处理大数据的编程模型,常用于数据聚合。在MongoDB...
在MongoDB中,管道(Pipeline)是聚合框架的核心部分,它允许用户通过一系列处理步骤来转换和过滤数据,类似于Unix和Linux中的管道概念。管道操作符是MongoDB中实现数据处理的关键工具。 一、MongoDB 管道介绍 ...
在分布式集合中,会出现计算错误的情况,这个时候推荐使用aggregate; 2,find() 方法以非结构化的方式来显示所有文档。 1 db.User.find();//相当于:select* from User; 3,exec() 方法用于检索字符串中的...