2017-06-17 19 views
0

次のmongodbクエリをmorphiaに変換しようとしていますが、morphiaが完全なドキュメントを返すことをサポートしているかどうかはわかりません。私は以下のmongo dbクエリをmorphia aggregation javaクエリに変換するのを手伝ってください。最後のレコードを取得するためにmorphia aggregationクエリ

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

Morphiaの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); 

私はmorphiaクエリにROOTを変換する方法のことを確認していません。

答えて

0

以下の集約パイプラインを試すことができます。

モンゴシェル問合せ:

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

Morphiaコード:

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

私は結果にアクセスしようとnullポインタ例外を取得しています、RateOuput.classは2 feildsのString当社及び他のものを持っていますオブジェクトレート付き –

+0

サンプル文書とともに 'RateOutput'と' Rate'クラスを投稿に追加できますか? – Veeram

+0

私は会社にアクセスすることはできませんが、イテレータからRateオブジェクトを読み取ることができます。返信いただきありがとうございます。 –

関連する問題