`

mongodb在aggregate中怎么统计总数

阅读更多
在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查询练习题及答案

    在本题中,我们将探讨 MongoDB 的查询操作,基于提供的 `user1` 和 `user2` 文档进行练习。 首先,让我们熟悉一下 `db.users.drop()` 命令。这个命令用于删除集合 `users`,如果存在的话。在 MongoDB 中,集合是...

    php代码-mongodb aggregate sample 的使用

    在这个“php代码-mongodb aggregate sample”的示例中,我们将深入探讨如何使用PHP与MongoDB的`aggregate`函数进行数据聚合。 首先,让我们了解`aggregate`的基本概念。MongoDB的`aggregate`方法接受一个数组参数,...

    MongoDB简单聚合函数.pdf

    在MongoDB中,聚合是用于处理数据记录并返回计算结果的过程,通常用于汇总数据、进行统计分析或者生成分组报告。本资料主要涉及MongoDB中的简单聚合函数,包括`count`、`distinct`和`group`等。 1. **count** 函数...

    MongDB分组统计

    在处理大量数据时,我们常常需要对数据进行分组统计,以便进行聚合操作,例如计算总数、平均值、最大值、最小值等。在C#中操作MongoDB,我们可以利用驱动程序提供的功能来实现这一目的。 MongoDB的分组功能主要通过...

    MongoDB增删改查

    在本篇中,我们将深入探讨MongoDB中的核心操作:增(添加)、删(删除)、改(修改)和查(查询),并结合具体的项目代码来帮助你理解这些概念。 ### 增(Add) 在MongoDB中,增加数据通常涉及创建新的文档并将其...

    MongoDB中的参数限制与阀值详析

    在分片集群(Sharded Clusters)中,group聚合函数不适用,应使用mapReduce或aggregate方法。覆盖查询(Covered Queries)在分片集群下要求查询条件包含shard key,否则无法利用索引来提高性能。对于已分片的collections...

    C#简单操作MongoDB的步骤全纪录

    除了基本的CRUD操作,MongoDB还提供了聚合框架,允许进行复杂的查询和数据处理,例如计算总数、分组统计等。在C#中,可以使用`Aggregate`方法结合`PipelineStageDefinition`构建聚合管道。 总的来说,C#操作MongoDB...

    在MongoDB 3.2和C#驱动程序2.0中执行聚合并使用异步方法

    在MongoDB 3.2版本中,引入了更多高级功能和优化,包括更强大的聚合框架,以支持复杂的数据分析。C#驱动程序2.0是针对.NET开发者的重要工具,它提供了与MongoDB服务器通信的接口,支持异步操作,提高了应用的并发...

    MongoDB 聚合

    在MongoDB中,聚合操作类似于SQL中的GROUP BY和聚合函数,但提供了更强大的数据处理能力。 `aggregate()` 方法是执行聚合操作的主要接口,它的基本语法如下: ```javascript db.COLLECTION_NAME.aggregate...

    Mongo-Commands:MongoDB命令速查表。 包含map-reduce,aggregate等

    在MongoDB中,掌握特定的命令是进行数据管理的关键。以下是对MongoDB中`map-reduce`和`aggregate`两个重要功能的详细解释。 ### 1. Map-Reduce Map-Reduce是一种处理大数据的编程模型,常用于数据聚合。在MongoDB...

    MongoDB 管道的介绍及操作符实例

    在MongoDB中,管道(Pipeline)是聚合框架的核心部分,它允许用户通过一系列处理步骤来转换和过滤数据,类似于Unix和Linux中的管道概念。管道操作符是MongoDB中实现数据处理的关键工具。 一、MongoDB 管道介绍 ...

    NodeJs操作MongoDB教程之分页功能以及常见问题

    在分布式集合中,会出现计算错误的情况,这个时候推荐使用aggregate;  2,find() 方法以非结构化的方式来显示所有文档。 1 db.User.find();//相当于:select* from User; 3,exec&#40;&#41; 方法用于检索字符串中的...

Global site tag (gtag.js) - Google Analytics