2013-03-22 122 views
2

ID字段寫入多個組在下面的查詢如何在MongoDB的Java驅動程序

{ $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驅動程序才能使用。

我試圖

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"}}; 

等。

但我總是得到這樣的結果

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

如果我只使用一個領域它的作品。 DBObject groupFields = new BasicDBObject(「_id」,new BasicDBObject(「success」,「$ success」));}};}};}};

回答

4

我們弄清楚了方法。我們可以通過使用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)); 
0

我可以通過這個代碼(代碼的Grails和蒙戈-Java的應用程序-3.2)實現這一點:

DBObject groupFields = new BasicDBObject() 
groupFields.put('success', "\$success") 
groupFields.put('responseCode', "\$responseCode") 
groupFields.put('label', "\$label") 
def result = collection.aggregate(Arrays.asList(Aggregates.group(groupFields, []))).iterator() 
+0

隨着Java驅動程序3+'Document'類,而應使用BasicDBObject的' '。 – Paul 2016-11-01 17:29:24

相關問題