var getCustomerSourceListFromDataToData = function (accountid, startDate, endDate, callback) { if (!startDate) {//启始时间默认30天前 startDate = moment().subtract(30, 'days').format('L'); } else { startDate = moment(startDate).format('L'); } if (!endDate) {//结束时间默认今天 endDate = moment().add(1, 'days').format('L'); } else { endDate = moment(endDate).add(1, 'days').format('L'); } console.log('enddate:' + endDate); console.log('startDate:' + startDate); //CustomerSourceModel // .find({ // date: { // $gte: startDate, // $lt: endDate // } // }).exec(callback); CustomerSourceModel .aggregate() .match({ date: { $gte: startDate, $lt: endDate } }) .group({ _id: null, totalNum: {$sum: "$num"}, }) .exec(callback); }
如上代码,实现简单的时间区间内的统计数据,结果总是match不到相应的数据,用注释掉的find的代码可以找到相关数据,math却不可以。。 已经确认aggregate方法没问题,去掉match限制,就能统计数totalNum。
mongodb版本 3.04 先谢过大家了