Mongoose .populate与.select不兼容

问题描述 投票:0回答:1

我试图只用name和填充的profile填充用户文档。如果我执行以下操作:

User.find().populate("profile")

输出:

[  
   {  
      "securityQuestions":{  
         "isSetup":false
      },
      "videos":[  

      ],
      "events":[  

      ],
      "_id":"5c7965aeaf076938cc974610",
      "name":"Wade Aston",
      "email":"[email protected]",
      "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实现相同的语法,但我得到相同的结果。对我来说太奇怪了!在此先感谢=]

mongoose mongoose-schema mongoose-populate
1个回答
0
投票

你可以使用select {name: true}只会选择名字字段

User.find().select({name: true}).populate("profile")

如果您想从配置文件中选择特定字段,也可以在那里选择

User.find().select(name: true).populate('profile', { __v: false })

这不会列出配置文件中的__V字段。

© www.soinside.com 2019 - 2024. All rights reserved.