2017-06-17 72 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对象。感谢回复。 –