MongoDB的组由用户每月

问题描述:

我有一个集合的设置是这样的:MongoDB的组由用户每月

{ 
    _id: ObjectId(), 
    user_id : ObjectId(), 
    amount: 123 
    date: Date() 
} 

我试图做的是总体来说,这种向下的数额,这是由月和user_ID的分组一$sum

我可以简单地按月:

{ 
    $group : { 
    _id : { $month: '$date' }, 
    amount : { $sum : '$amount' }, 
    } 
}, 
{ 
    $project : { 
    amount: '$amount', 
    date: '$date' 
    } 
} 

,可以做用户一样,但我似乎不能由用户进行分解,然后通过每月金额。我期待的最终结果是这样的:

[{ 
_id: user_id, 
total: 123, 
months: [{ 
    '2015-10' : 100, 
    '2015-09' : 23 
}] 
}] 

任何帮助将不胜感激。谢谢

 db.stacks.insert({ 
     user_id : 1, 
     amount: 100 
     date: new Date('Sep 04, 2014') 
    }) 

    { 
     user_id : 1, 
     amount: 12 
     date: new Date('Oct 04, 2014') 
    } 

    db.invent.aggregate([ 
      {$group:{"_id": {date: "$date",user_id: "$user_id"}, 
      sum_by_date: {"$sum": "$amount"} 
      }}, 
      {$group:{ 
      "_id": "$_id.user_id", 
      total_sum: {"$sum": "$sum_by_date"}, 
      months:{"$push":"$_id.date"}, 
      }} 
     ]) 

结果:{ “_id”:1, “total_sum”:112, “月”:[ISODate( “2007-04-16T18:30:00Z”),ISODate(“2007-03 -16T18:30:00Z“)]}

注意:它不完全,试图将$ _id.date和$ sum_by_date一起推送。