我有这个模型数据:
var orders = [{
_id: 'order_1'
users: [{
name: 'Bob'
_id: 'user_1',
company: 'company_1'
}, {
name: 'John'
_id: 'user_3',
company: 'company_2'
}]
}, {
_id: 'order_2'
users: [{
name: 'Mary'
_id: 'user_2',
company: 'company_1'
}]}];
使用聚合框架我想最终得到:
[{
_id: 'user_1',
order: 'order_1',
company: 'company_1'
}, {
_id: 'user_2',
order: 'order_2',
company: 'company_1'
}];
代码:
return Order.aggregateAsync([{
$unwind: '$users'
}, {
$match: {
'users.company': 'company_1'
}
}, {
$project: {
id: '$users._id',
order: '$_id',
company: '$users.company',
}
}, {
$group: {
_id: "$users"
}
}]);
但事情并不完全正确。一旦我添加了$ group参数,我就会丢失结果中的所有数据,最后只得到数组中的用户ID。
[
{ _id: 'user_1' },
{ _id: 'user_2' }
]
如何获取我在结果中投射的所有数据?