2017-06-17 69 views
0

我想將下面的mongodb查詢轉換爲嗎啡,但我不確定morphia是否支持返回完整的文檔。請幫助我將下面的mongo db查詢轉換爲morphia聚合java查詢。嗎啡聚合查詢獲取最後記錄

db.rates.aggregate([{ "$sort": {"date":-1,"lastUpdated":-1}},{$group :{ _id:"$company","Rate": { $first :"$$ROOT"} } }]) 

嗎啡的java查詢

Iterator<RateOutput> ratesIterator = ds.createAggregation(Rate.class) 
       .sort(Sort.descending("date"),Sort.descending("lastUpdated")) 
       .group(Group.grouping("company"),Group.grouping("fxRate",Group.last("fxRate"))) 
       .aggregate(RateOutput.class); 

我不知道如何ROOT轉換爲嗎啡查詢。

回答

0

您可以嘗試下面的聚合管道。

蒙戈殼牌查詢:

[{ "$sort" : { "date" : -1 , "lastUpdated" : -1}}, { "$group" : { "_id" : "$company" , "fxRate" : { "$last" : "$$ROOT"}}}] 

嗎啡代碼:

Iterator<RateOutput> ratesIterator = datastore.createAggregation(Rate.class) 
       .sort(Sort.descending("date"),Sort.descending("lastUpdated")) 
       .group("company", grouping("fxRate", Accumulator.accumulator("$last", (Object)"$$ROOT"))) 
       .aggregate(RateOutput.class); 
+0

我正在試圖訪問結果時,一個空指針異常,RateOuput.class有兩個精密組件用一個字符串公司及其他與對象速率 –

+0

您可以將'RateOutput'和'Rate'類與示例文檔一起添加到帖子中嗎? – Veeram

+0

我無法訪問公司,但能夠從迭代器中讀取Rate對象。感謝回覆。 –