2016-10-18 121 views
1

我对猫鼬很陌生,我有一个公司列表,每个公司都有一个用户子数组。我只是想与猫鼬检索特定公司的所有用户:猫鼬 - 查询获取文档的所有子文档

一个公司就像

{ 
    "_id": "57ffa47f5b70f90831212348", 
    "name": "mycompany", 
    "address": "...", 
    "phone": "...", 
    "users": [ 
     { 
      "_id": "57ffa47f5b70f90831212347", 
      "username": "alpha", 
      "name": "myname", 
      "surname": "mysurname", 
      "password": "..." 
     } 
    ] 
} 

我试着用

Company.findOne({ 
     'name': req.user.name 
    }) 

     .aggregate({$unwind: '$users'}) 

     .exec(
     function(err, users) { 
      if (err) res.status(500).send(err); 

      res.json(users); 
     }); 

,但我没有运气...我米不知道如何正确使用聚合。

回答

2

只是填充company.users

Company.findOne({ 
     'name': req.user.name 
    }) 
     .populate('users', 'username name surname') 
     .exec(
     function(err, company) { 
      if (err) res.status(500).send(err); 

      res.json(company.users); 
     }); 
+0

感谢它的作品!它也可以使用'.populate('users')'。你知道我在哪里可以找到“填充”和“聚合”的好解释吗? – Diego

+1

Mongoose Docs当然,'populate('users')'不太安全,你可能会发送敏感数据(密码,passwod_hash) –

+0

我试过了,但是我发现它并不那么清楚......无论如何,感谢这篇关于安全性的提示 – Diego