跨级别填充猫鼬并显示某些字段

Populate mongoose across levels and display certain fields

const userSchema = new Schema({
  name: String,
  email: String,
  friends: [{ type: ObjectId, ref: 'User' }]
});

User.
  findOne({ name: 'Val' }).
  populate({
    path: 'friends',
    populate: { path: 'friends' }
  });

上面的模式填充了 friends 数组的整个用户字段,但对于 friends 数组,我只需要填充名称。如何限制mongoose嵌套层的字段。

一般来说,您将首先像您所做的那样填充 friends,然后添加 select 以简单地获取您想要从 User 模型中提取的字段。

User.findOne({ name: 'Val' })
  .populate({
    path: 'friends',
    select: ['name', 'fieldName']
  })

我添加了元素数组以证明您可以通过这种方式 select 更多字段,在您的情况下它只是 name.