Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按用户和月份划分的Mongodb组_Mongodb - Fatal编程技术网

按用户和月份划分的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_推到一起