2014-01-10 2 views
1

Я стараюсь агрегировать мангуст. Я хочу получить общую сумму поля в диапазоне дат. http://mongoosejs.com/docs/api.html#model_Model.aggregateMongoose aggregate over date range

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 } 

Любая идея?

ответ

2

Этот синтаксис не является правильным:

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

$count не оператор выше, а просто ссылка на поле. В $group вы не можете иметь «голые» поля. Вы должны использовать оператор агрегации, как в:

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

Пожалуйста, покажите несколько образцов документов, и я могу обновить ответ на более сложный путь.

+0

Спасибо :) Это сработало :) – Neo