在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 group aggregate项目实战笔记 管道聚合 mongodb group按时间分组,用aggregate管道聚合 会比group的处理效率要高而且更灵活方便
主要介绍了使用aggregate在MongoDB中查询重复数据记录的方法的相关资料,需要的朋友可以参考下
最近一直在用mongodb,有时候会需要用到统计,在网上查了一些资料,最适合用的就是用aggregate,以下介绍一下自己运用的心得。。 MongoDB 聚合 MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),...
以上两种情况的聚合统计,分别对应与聚合框架中的 $group 操作步骤和 $project 操作步骤。 1.$group 直接看例子吧。 Case 1 测试集合mycol中的数据如下: { title: 'MongoDB Overview', description: 'MongoDB is...
本文实例讲述了nodejs+mongodb aggregate级联查询操作。分享给大家供大家参考,具体如下: 最近完成了一个nodejs+mongoose的项目,碰到了mongodb的级联查询操作。情形是实现一个排行榜,查看某个公司(organization...
本篇文章主要介绍了Mongodb在CSharp里实现Aggregate实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
我的博客:www.wangs0622.com, mongoDB-aggregate pipeline 使用的文档集合。
此文档是MongoDB在集群环境下的使用,在京东等电商公司中的使用。
php代码-mongodb aggregate sample 的使用
mongoDB中文文档和一个可以运行的dome,其中包括mongoDB索引,管道,事务,集合和crud等基本操作
MongoDB北京2014 - MongoDB在快的打车关键业务中的应用 - 欧阳康
MongoDB Java API 中文
使用聚合管道可以对集合中的文档进行变换和组合,常用于多表关联查询、数据的统计。 db.COLLECTION_NAME.aggregate() 方法用来构建和使用聚合管道,下图是官网给的实例,可以看出来聚合管道的用法还是比较简单的。 ...
MongoDB 3.6 中文文档
MongoDB 聚合管道(Aggregation Pipeline) - 张善友 - 博客园
MongoDB应用 Java应用 纯java mongodb操作 mongodb 通用dao
Spring Data MongoDB中文文档 便宜下载了。