const activeResult = await think.mongoRecord('statics_daily').aggregate([ { $match: chnWhere }, { $group: { _id: { $dateToString: { format: '%Y/%m/%d', date: { '$subtract': ['$date', tz * 60 * 1000] } } }, active: {$sum: '$active.today'}, keep: {$push: '$active_retention'} } }, { $unwind: '$keep' }, { $project: { active: '$active', param: { $map: { input: {$objectToArray: '$keep'}, as: 'parameter', in: { $cond: { if: { $ifNull: ['$$parameter.k', false] }, then: { 'ts': '$_id', 'key': '$$parameter.k', 'value': '$$parameter.v', 'active': '$active' }, else: false } } } } } }, { $unwind: '$param' }, { $group: { _id: { ts: '$param.ts', key: '$param.key', active: '$active' }, value: {$sum: '$param.value'} } }, { $group: { _id: '$_id.ts', active: { '$first': '$_id.active' }, keep: { $mergeObjects: { $arrayToObject: [ [{ k: '$_id.key', v: '$value' }] ] } } } }, { $sort: {'_id': -1} } ]);
nodejs下mongo的键值转换
最新推荐文章于 2024-09-14 10:46:48 发布
在Node.js环境中,使用think.mongoRecord对mongodb数据进行处理,包括筛选($match)、分组($group)、展开($unwind)、转换($project)、聚合($sum)等操作,实现日期格式化、数据汇总以及对象数组的键值转换,以获取并统计每日活跃用户数(active)和保留率(keep)。
摘要由CSDN通过智能技术生成