在日期范围内的猫鼬聚合

时间:2014-01-10 08:35:52

标签: node.js mongodb mongoose aggregation-framework

我正在尝试mongoose聚合。我想获得日期范围内的字段总和。 http://mongoosejs.com/docs/api.html#model_Model.aggregate

mymodel.aggregate({$match:{date:{$gte: fromDate, $lt: toDate}}},
                  {$project:{_id:0,date:1, count:1}},
                  {$group:{'_id':0,count:"$count"}}).exec(function(err,data){
        if(err){
            console.log('Error Fetching model');
            console.log(err);
        }
        callback(false, data);
});

这不起作用。

{ [MongoError: exception: the group aggregate field 'count' must be defined as an expression inside an object]
   name: 'MongoError',
   errmsg: 'exception: the group aggregate field \'count\' must be defined as an expression inside an object',
   code: 15951,
   ok: 0 }

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

此语法不正确:

{$group:{'_id':0,count:"$count"}}

$count不是上面的运算符,只是字段引用。您不能在$group中使用“裸”字段引用。您需要使用聚合运算符,如:

{$group:{'_id':0,count:{"$sum": "$count"}}}

请展示一些示例文档,我可以更详细地更新答案。