Mongo聚合$ group问题

时间:2015-08-24 18:04:28

标签: mongodb aggregation-framework

我有这个模型数据:

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' } 
]

如何获取我在结果中投射的所有数据?

0 个答案:

没有答案