2013-07-11 34 views
0

我需要在到使用Java DB驅動程序來獲取數據的Java程序翻譯下面的MongoDB查詢的指導。任何指導將非常感激。Java的MongoDB的aggreate查詢

db.playerscorecollection.aggregate([ 

{ 

$unwind: "$scorearray" 

}, 

{ 
$group: 
{ 

    _id: {player:'$player,venue:'$venue'}, maxScore: { $max: "$scorearray.score" } 

} 

} 

]); 
+0

其實我聽錯了,我在這個問題發佈基於玩家和地點,然後caluclating最高得分分組結果MongoDB的查詢,我需要得到只有最高分的場地,如果我從場地出場,我得到一個錯誤,有人可以幫忙嗎? – user1965449

+0

你需要學會說*你得到了什麼*錯誤!在任何情況下,你可以改變_id部分:_id:「$場地」 - 當然,它不會返回球員呢。 – Derick

回答

1

文檔和教程在http://docs.mongodb.org/ecosystem/tutorial/use-aggregation-framework-with-java-driver/是相當廣泛的。看完這個答案的其餘部分之前,請先閱讀第一。在一般情況下,這樣的事情應該工作:

// create our pipeline operations, first the $unwind 
DBObject unwind = new BasicDBObject("$unwind", "$scorearray"); 

DBObject groupIdFields = new BasicDBObject("player", "$player"); 
groupIdFields.put("venue", "$venue"); 
DBObject groupFields = new BasicDBObject("_id", groupIdFields); 
groupFields.put("maxScore", new BasicDBObject("$max", "$scorearray.score")); 
DBObject group = new BasicDBObject("$group", groupFields); 

// run aggregation 
AggregationOutput output = MDB.getCollection("playerscorecollection").aggregate(unwind, group); 
+0

謝謝!這是準確的。 – user1965449

+0

謝謝,我該如何添加獨特的。 ? – user1965449

+0

其實我錯了,我在問題中發佈的mongodb查詢是根據玩家和場地對結果進行分組,然後對最高分進行計算,我只需要獲得最高分的場地,如果我從場地中取出場地id字段出現錯誤,有人可以幫忙嗎? – user1965449