按用户和月份划分的Mongodb组
我的收藏设置如下:按用户和月份划分的Mongodb组,mongodb,Mongodb,我的收藏设置如下: { _id: ObjectId(), user_id : ObjectId(), amount: 123 date: Date() } [{ _id: user_id, total: 123, months: [{ '2015-10' : 100, '2015-09' : 23 }] }] 我要做的是将这个数据汇总到金额的$sum,它是按月份和用户id分组的 我可以简单地按月分组: { $group : { _id : {
{
_id: ObjectId(),
user_id : ObjectId(),
amount: 123
date: Date()
}
[{
_id: user_id,
total: 123,
months: [{
'2015-10' : 100,
'2015-09' : 23
}]
}]
我要做的是将这个数据汇总到金额的$sum,它是按月份和用户id分组的
我可以简单地按月分组:
{
$group : {
_id : { $month: '$date' },
amount : { $sum : '$amount' },
}
},
{
$project : {
amount: '$amount',
date: '$date'
}
}
用户也可以这样做,但我似乎无法按用户细分,然后按月份细分金额。我想要的最终结果是这样的:
{
_id: ObjectId(),
user_id : ObjectId(),
amount: 123
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,总数:112,月:[ISODate2007-04-16T18:30:00Z,ISODate2007-03-16T18:30:00Z]}
注意:它尚未完全完成,正在尝试按日期将$id.date和$sum_推到一起