UNPKG

@jvhaile/loopback4-helper

Version:
67 lines (60 loc) 1.75 kB
const _ = require('lodash') function deepMapObj(obj) { if (_.isArray(obj)) { return obj.map(deepMapObj); } if (_.isObject(obj)) { const newObj = {}; Object.keys(obj).forEach(key => { newObj[key] = deepMapObj(obj[key]); }); return newObj; } if (_.isString(obj) && obj.startsWith('$oid')) { try { return ObjectId(obj.slice(4)); } catch (e) { return obj.slice(4); } } return obj; } ObjectId = require('mongodb').ObjectID; const query=[ { "$facet":{ "recent":[ { "$addFields": { "dmy": { "$dateToString": { "format": "%Y-%m-%d", "date": "$createdAt" } } } }, { "$group": { "_id": { "createdAt" : "$dmy" }, "count" : { "$sum" : 1 } } }, { "$project": { "_id":0, "createdAt":"$_id.createdAt", "count":1 } }, { "$sort":{"createdAt":1} } ], "total":[ {"$match":{"researchId":"$oid5fb93b3d3f89a635d824bee3"}}, { "$group": { "_id": null, "total": { "$sum": 1 } } }, { "$project": { "_id": 0 } } ] } }, { "$addFields": { "sum": { "$arrayElemAt": [ "$total", 0 ] } } }, { "$project":{ "recent":1, "total":"$sum.total" } } ]; console.log(deepMapObj(query));