数据结构是,需求Demand中有个sbu字段ref指向业务Sbu。而我要做的是在获取到业务列表的同时获取到每个业务下需求的数量。直接上代码db.Demand.aggregate([
{ $group: { _id: '$sbu', count: {$sum: 1} } }
], function(err, result) {
db.Sbu.populate(result, {path: '_id'}, function(err, result) { console.log(err, result);
});
});result如下[
{ _id: { name: '测试二', _id: 575d2f6f746542c169d12e9b }, count: 1
},
{ _id: { name: '测试', _id: 575d2f6f746542c169d12e9b }, count: 8
},
]而我希望得到[
{ name: '测试二',
_id: 575d2f6f746542c169d12e9b, count: 1
},
{ name: '测试',
_id: 575d2f6f746542c169d12e9b, count: 8
},
]有否不用上面那样两次query而获取到我希望的数据形式的方法吗?
1 回答
紫衣仙女
TA贡献1839条经验 获得超15个赞
db.Demand .aggregate() .group( { _id: '$sbu', count: {$sum: 1} } ) .lookup( { from: 'sbus', localField:'_id', foreignField:'_id', as:'_id' } ) .exec(function(err, result) { console.log(err, result) });
这个可以实现一次Query了,但还差数据的形式~
用 Object.assign
处理一下就好啦
添加回答
举报
0/150
提交
取消