如何在Mongodb Java驱动程序中编写多个ID字段分组 [英] How to write multiple group by id fields in Mongodb java driver

查看:178
本文介绍了如何在Mongodb Java驱动程序中编写多个ID字段分组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在下面的查询中

{ $group : {
        _id :  { success:'$success', responseCode:'$responseCode', label:'$label'},
        max_timeStamp : { $timeStamp : 1 },
        count_responseCode : { $sum : 1 },
        avg_value : { $sum : "$value" },
        count_success : { $sum : 1 }
    }}

如何将_id : { success:'$success', responseCode:'$responseCode', label:'$label'},转换为在java mongodb驱动程序中使用.

How _id : { success:'$success', responseCode:'$responseCode', label:'$label'}, can be translated to use in java mongodb driver.

我尝试了

BasicDBList list = new BasicDBList();
list.add(new BasicDBObject("success", "$success"));
list.add(new BasicDBObject("responseCode", "$responseCode"));
list.add(new BasicDBObject("label", "$label"));
AggregationOutput output = collection.aggregate(match, project, group); 

多维数组

String [][] muitiGroupBy = {{"success", "$success"},{"responseCode", "$responseCode"},{"label", "$label"}};

等.

但是我总是得到这样的结果

But i always get like this as result

"_id" : [ { "success" : "$success"} , { "responseCode" : "$responseCode"}]

如果我只使用一个字段,它将起作用.

If I use only one field it works.

DBObject groupFields = new BasicDBObject("_id",new BasicDBObject("success","$ success"));

DBObject groupFields = new BasicDBObject( "_id", new BasicDBObject("success", "$success"));

推荐答案

我们确实确定了方法.我们可以使用这个.

We did figure out how. We can achieve by using this.

Map<String, Object> dbObjIdMap = new HashMap<String, Object>();
dbObjIdMap.put("success", "$success");
dbObjIdMap.put("responseCode", "$responseCode");
dbObjIdMap.put("label", "$label");
DBObject groupFields = new BasicDBObject( "_id", new BasicDBObject(dbObjIdMap));

这篇关于如何在Mongodb Java驱动程序中编写多个ID字段分组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆