2017-05-18 5 views
1

私はオブジェクトからなる3つの配列を持っています。私がそれらを巻き戻そうとするとき、私は同じ配列のいくつかを返す。私はオブジェクトとして3つの配列のクリーンなセットを返さない。以下は、それらを巻き戻そうとする前の配列の出力です。彼らをきれいにくつろげる良い方法はありますか?ありがとう。MongoDBのオブジェクトの複数の配列の巻き戻し

{

"amount_last_30_days": [ 
    { 
     "_id": "credit card bill", 
     "last_30_days": 4500.37 
    } 
    ], 
    "amount_last_60_days": [ 
    { 
     "_id": "credit card bill", 
     "last_60_days": 1000.04 
    }, 
    { 
     "_id": "electric bill", 
     "last_60_days": 7500.41 
    } 
    ], 
    "amount_last_90_days": [ 
    { 
     "_id": "credit card bill", 
     "last_90_days": 1500.06 
    }, 
    { 
     "_id": "electric bill", 
     "last_90_days": 7500.41 
    } 
    ], 

}

最終結果:

{

{ 
"_id": "credit card bill", 
"last_30_days": 4500.37, 
"last_60_days": 1000.04, 
"last_90_days": 1500.06 
}, 
{ 
"_id": "electric bill", 
"last_30_days": 0, 
"last_60_days": 7500.41, 
"last_90_days": 7500.41 
} 

}

+0

最後のデータ構造を –

+0

のように表示することができますか?投稿された最終結果に従って、上記の項目を結果にグループ化する方法をさらに設定します。 –

答えて

1

あなたはアルをマージする$concatArraysを試すことができます毎日の量。

db.collection.aggregate([ 
    {$project:{all_amounts:{$concatArrays:["$amount_last_30_days", "$amount_last_60_days", "$amount_last_90_days"]}}} 
]) 

、さらなる処理のためにすることができます$unwindのような

何か。

更新 - 合計額に$group段階を追加します。

db.collection.aggregate([ 
    {$project:{all_amounts:{$concatArrays:["$amount_last_30_days", "$amount_last_60_days", "$amount_last_90_days"]}}}, 
    {$unwind:"$all_amounts"}, 
    {$group:{_id:"$all_amounts._id", "last_30_days": {$sum:"$all_amounts.last_30_days"}, "last_60_days":{$sum:"$all_amounts.last_60_days"}, "last_90_days":{$sum:"$all_amounts.last_90_days"}}} 
]) 
+0

あなたのお手伝いをいただきありがとうございます。あなたは上記の私の最後の質問について助けてくれますか?ありがとう! –

+0

あなたは大歓迎です。金額の合計を含めるように更新されました。 – Veeram

+0

あなたはVeeramの男です!それはうまくいった。ありがとう! –

関連する問題