java怎么做到使用mongodb来进行分组查询统计并进行排序?

竹林隐逸 发布于 2017/03/07 11:24
阅读 2K+
收藏 0

我是对数据出现次数进行分组统计,但不知道如何排序。

DBObject key = new BasicDBObject();
        key.put("档案编号", true);//需要分组的字段
        DBObject initial = new BasicDBObject();
        initial.put("click_amount", 0);//初始化需要计算的字段值
        String reduce = "function(obj,prev) {"
                + "prev.click_amount++;"
                + "prev.题名 = obj.题名;"
                + "}";
        String finalize = "function(out) {"
                + ""
                + "}";
        BasicDBList group = (BasicDBList)mongoColl.group(key, query, initial, reduce, finalize);

还有没有其他的方法进行分组统计排序的?刚接触mongodb,太多不懂的。

加载中
0
Kit_lee
Kit_lee
.sort( { attribute: -1 } )
Kit_lee
Kit_lee
回复 @竹林隐逸 : db.coll.aggregate({ $group: { _id: "$a", countA: { $sum: 1}, sumC:{ $sum: "$c"}, }, $sort:{a:1} });
竹林隐逸
竹林隐逸
点不出来sort
0
Kit_lee
Kit_lee

mongodb的shell命令是这样写,至于你用代码实现的话具体的开发框架要看着命令对比一下了,希望对你有帮助

db.collection.find(.....).sort({_id, -1});

db.coll.aggregate({ $group: { _id: "$a", countA: { $sum: 1}, sumC:{ $sum: "$c"}, }, $sort:{a:1} });

0
蓝风970655147
蓝风970655147

aggregate

	TypedAggregation agg = TypedAggregation.newAggregation($Domain.class,
			Arrays.asList(
					TypedAggregation.match($match),
					TypedAggregation.group($group),
					TypedAggregation.sort($sort),
					TypedAggregation.skip($skip),
					TypedAggregation.limit($limit)
			)
	);

	AggregationResults result = mongoTemplate.aggregate(agg, DBObject.class);

用原生的mongoDriver, 差不多也是这样, 不过 对于查询的构建方式有些不同

返回顶部
顶部