Robomongo的聚合查询如下:
db.accounts.aggregate([ { $match: { “date": {"$gte” : “2014/07/01” , “$lte” : "2014/07/31"}} }, { $group: { _id: "$kind.code_no", total: { $sum: “$cash” } } }, { $sort: { total: -1 } } ])
查出数据:###
{ “result” : [ { “_id” : "income", “total” : 1000 }, { “_id” : "payout", “total” : 300 } ], “ok” : 1 }
node方法中的代码如下,Accounts是model
Accounts.aggregate([ { $match: { “date": {"$gte” : firtday , “$lte” : endday}} }, { $group: { _id: "$kind.code_no", total: { $sum: “$cash” } } }, { $sort: { total: -1 } } ],function (err, docs) { if (err) { return callback(err); } return callback(null, docs); });
查询后直接加的回调函数。。。。大家都怎么用聚合查询然后执行回调函数的。###
http://mongoosejs.com/docs/api.html#model_Model.aggregate 这里有API
另外请问下,你数据库日期存储的是格式, 我用的 毫秒,我现在很纠结,这个聚合怎么做。new MongoDate(1405360394, 499000) 你底层格式是怎么样的呢?
我这么一写查不出数据。妹的 db.sendinfo.aggregate([ { $match: { “create_at": {"$gte” : “2014-07-01T17: 53: 14.499Z” , “$lte” : "2014-07-31T17: 53: 14.499Z"}} }, { $group: { _id: "$create_at", total: { $sum: “$sendto” } } }, { $sort: { total: -1 } } ])
###我的底层格式date直接就是String类型的。### date : { type: String }
你的create_at用Date型( create_at: { type: Date, default: Date.now },) 你这么用就可以查出来了。 var start = new Date(2014, 6, 14);//2014年7月14日 var end = new Date(2014, 6, 31); //2014年7月31日,6代表7月,从0开始数 ,0-11 db.accounts.aggregate([ { $match: { “create_at": {"$gte” : start , “$lte” : end}} }, { $group: { _id: "$kind.code_no", total: { $sum: “$cash” } } }, { $sort: { total: -1 } } ])
这里有个帖子你可以看下:http://blog.csdn.net/laiahu/article/details/7590963