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一起推送。