大佬教程收集整理的这篇文章主要介绍了node.js – 使用mongoose.js按月和年分组,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
{ "AccountID" : "87f7fd60-d1ad-11e2-98bb-795730bce125","userId" : ObjectId("51b59fbec46916e60d00000c"),"_id" : ObjectId("51b6e603e3efef161b000003"),"accessDate" : ISODate("2013-06-11T08:55:31.957Z"),"__v" : 0 } { "AccountID" : "47f7fd60-d1ad-11e2-98bb-795730bce125","userId" : ObjectId("51b59fbec46916e60d00000d"),"accessDate" : ISODate("2013-05-1T08:05:31.957Z"),"__v" : 0 }
我该写什么来查询结果如下:
这是按月和年分组的结果和每天的计数.
{ "usage": [ { "year": 2013,"monthlyusage": [ { "month": 1,"dailyusage": [ { "day": 1,"count": 205 },{ "day": 2,"count": 1109 },{ "day": 4,"count": 455 } ] },{ "month": 2,"dailyusage": [ { "day": 11,"count": 256 },"count": 1001 },{ "day": 5,"count": 65 } ] } ] },{ "year": 2012,"monthlyusage": [ { "month": 12,"count": 78 },"count": 7009 },{ "day": 28,"count": 55 } ] },{ "month": 11,"count": 800 },"count": 5094 },{ "day": 25,"count": 165 } ] } ] } ] }
我怎么能用mongoose.js框架做到这一点
要按照上面描述的形式按摩数据,可以使用带有一系列$group操作的聚合管道.这里是使用mongoose框架:
var datescheR_230_11845@a = mongoose.scheR_230_11845@a({…}); var DateItem = mongoose.model('DateItem',datescheR_230_11845@a); DateItem.aggregate( { $group : { _id : { year: { $year : "$accessDate" },month: { $month : "$accessDate" },day: { $dayOfMonth : "$accessDate" }},count : { $sum : 1 }} },{ $group : { _id : { year: "$_id.year",month: "$_id.month" },dailyusage: { $push: { day: "$_id.day",count: "$count" }}} },{ $group : { _id : { year: "$_id.year" },monthlyusage: { $push: { month: "$_id.month",dailyusage: "$dailyusage" }}} },function (err,res) { if (err) ; // TODO handle error console.log(res); }); });
{ "_id" : { "year" : 2013,"month" : 8,"day" : 15 },"count" : 1 }
第二个$group将生成按月分组的文档:
{ "_id" : { "year" : 2012,"month" : 11 },"dailyusage" : [ { "day" : 6,"count" : 1 },{ "day" : 9,... ] },
而第三个$group将产生更大的文档,每年一个.
此查询将您的数据聚合为大型分层文档.但是,如果您计划在聚合后对此数据运行查询,则这可能不是数据最有用的形式.请考虑如何使用聚合数据.涉及更小文档的模式(可能每月一个,甚至每天一个)可能更方便.
以上是大佬教程为你收集整理的node.js – 使用mongoose.js按月和年分组全部内容,希望文章能够帮你解决node.js – 使用mongoose.js按月和年分组所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。