我正在尝试仅使用name
和填充的profile
填充用户文档。如果我执行以下操作:
User.find().populate("profile")
输出:
[
{
"securityQuestions":{
"isSetup":false
},
"videos":[
],
"events":[
],
"_id":"5c7965aeaf076938cc974610",
"name":"Wade Aston",
"email":"mrwadepro@gmail.com",
"date":"2019-03-01T17:02:38.845Z",
"__v":0,
"profile":{
"_id":"5c7965afaf076938cc974612",
"user":"5c7965aeaf076938cc974610",
"profile_picture":"5c7965aeaf076938cc974611",
"media_feed":[
],
"date":"2019-03-01T17:02:39.055Z",
"__v":0
},
"profile_type":"DistrictAdminProfile",
}
]
这很好,但是我不想要所有用户字段,我只想要名称和填充的个人资料。因此,如果我这样做:
User.find({}, "name profile").populate("profile")
输出:
[
{
"_id":"5c7965aeaf076938cc974610",
"name":"Luke",
"profile":"5c7965afaf076938cc974612"
}
]
由于某些原因,选择导致填充不再起作用。我尝试通过这篇Similar Question帖子实现相同的语法,但得到的结果相同。我真奇怪!预先感谢=]
答案 0 :(得分:0)
您可以使用 select
{name: true}
仅选择姓名字段
User.find().select({name: true}).populate("profile")
如果您还想从配置文件中选择特定字段,也可以在其中选择
User.find().select(name: true).populate('profile', { __v: false })
这不会列出个人资料中的 __ V 字段。