小程序
小游戏
企业微信
微信支付
扫描小程序码分享
我现在接上次的group的统计问题,假设我要统计过去30天每一天的订单量,这时候通过时间条件判断以及group的强大功能,终于查出了数据,但是,发现一个问题,若某一天数据为空,这一天的数据就查询不到了,例如下图,我要查询11月12号前30天的数据,但是只显示4天的数据,我怎么把前几天的数据补齐呢?有没有简单一点的办法呢?
3 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
建议在读出数据后在JS里补全。一个for搞定。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
你的统计语句是怎么写的
var a = new Array(30), b = {}, data = []
a.fill(new Date('2019-11-12 00:00:00'))
a.forEach(function (v, i) {
var t = new Date(v.valueOf() - i * 86400000),
k = t.toLocaleDateString(), d = k.split(/(?:\/|-)/)
d.shift()
b[d.join('_')] = { month: d[0], dayOfMonth: d[1] }
})
// 假设row为数据库统计结果
var rows = [{ _id: { month: 11, dayOfMonth: 9 }, totalOrders: 1, totalAmount: 10 }]
for(var k in b){
var val = b[k]
rows.forEach(function (v, i) {
var key = v._id.month + '_' + v._id.dayOfMonth
data.push(key == k ? v : { _id: val, totalOrders: 0, totalAmount: 0 })
}
console.log(data)
你定义一个有31个元素均为零的数组,如果改天没有订单就为零,不为零就赋值为订单量
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
建议在读出数据后在JS里补全。一个for搞定。
你的统计语句是怎么写的
var a = new Array(30), b = {}, data = []
a.fill(new Date('2019-11-12 00:00:00'))
a.forEach(function (v, i) {
var t = new Date(v.valueOf() - i * 86400000),
k = t.toLocaleDateString(), d = k.split(/(?:\/|-)/)
d.shift()
b[d.join('_')] = { month: d[0], dayOfMonth: d[1] }
})
// 假设row为数据库统计结果
var rows = [{ _id: { month: 11, dayOfMonth: 9 }, totalOrders: 1, totalAmount: 10 }]
for(var k in b){
var val = b[k]
rows.forEach(function (v, i) {
var key = v._id.month + '_' + v._id.dayOfMonth
data.push(key == k ? v : { _id: val, totalOrders: 0, totalAmount: 0 })
})
}
console.log(data)
你定义一个有31个元素均为零的数组,如果改天没有订单就为零,不为零就赋值为订单量