2017-10-11 6 views
0

私は2つのmongo DBコレクションを持っています。それらに参加したいと思っています。検索は ですが、グループ化して1つのコレクションコレクションA ID、 AMT、 TYPE(1、2)Mongo合計グループと条件でJavaを検索する

コレクションB ID、今コレクションAに TAMT1、 TAMT2、

:条件

例とif(TYPE == 1)次にTAMT1として(TYPE == 2)Sum(AMT)をTAMT2グループとしてIDで集計し、Collection Bと比較します。

どのようなヒント/ガイドがありますかそれは我々がタイプに基づいて金額を合計する集計パイプライン事業者に$group$sum を使用することができます

+0

あなたは今まで何を試しましたか? – sissy

+0

集約agg = newAggregationそれ以外の場合は渡すことができない基準を1つだけ受け入れています –

答えて

0

収集をしましょう「」次の書類を持って

{ "_id" : ObjectId("59de286a5d9132bd0bf3e870"), "amt" : 100, "type" : 1 } 
{ "_id" : ObjectId("59de286a5d9132bd0bf3e871"), "amt" : 200, "type" : 1 } 
{ "_id" : ObjectId("59de286a5d9132bd0bf3e872"), "amt" : 1000, "type" : 2 } 
{ "_id" : ObjectId("59de286a5d9132bd0bf3e873"), "amt" : 10000, "type" : 1 } 
{ "_id" : ObjectId("59de286a5d9132bd0bf3e874"), "amt" : 1000, "type" : 2 } 
{ "_id" : ObjectId("59de286a5d9132bd0bf3e875"), "amt" : 5000, "type" : 2 } 

モンゴシェルのqをJAVA行います種類に基づいてドキュメントを合計するueryでは

db.a.aggregate([{$group:{_id:"$type", total:{$sum:"$amt"}}}]) 

私たちのサンプル収集の上で集計クエリの結果です

{ "_id" : 2, "total" : 7000 } 
{ "_id" : 1, "total" : 10300 } 

は、Javaクエリ

へのシェルのクエリを変換する必要があることにご注意ください