如何在Mongoose二级populate中查询指定字段?
Mongoose二级关联查询(populate)指定字段的实现方法
你只需要在每一层的populate配置里,通过select选项指定要获取的字段即可,修改后的代码如下:
const {_id, name, email, role, account, subUsers } = await User.findById(req.user.id) .populate({ path : 'account', select : '_id name', // 指定account模型要获取的字段 populate: [ { path: 'providers', select: '_id name' // 指定providers模型要获取的字段 }, ] }) .populate('subUsers', {_id: 1, name: 1}); // 这种简洁写法和select效果相同
关键说明:
- 对于一级关联的
account,直接在populate配置对象中添加select属性,值可以是空格分隔的字段名,也可以用{_id:1, name:1}的对象形式 - 对于二级关联的
providers,在嵌套的populate配置里同样添加select属性,就能精准筛选需要的字段 subUsers的写法是Mongoose提供的简洁形式,第二个参数传入字段筛选对象,和使用select的效果完全一致
内容的提问来源于stack exchange,提问作者Faslu Rahman Kadavath
相关产品推荐
相关产品推荐

