跨级别填充猫鼬并显示某些字段
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
.
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
.