填充多个参考(子文档)并选择特定字段

Posted

技术标签:

【中文标题】填充多个参考(子文档)并选择特定字段【英文标题】:Populate multiple references (subdocuments) AND select SPECIFIC fields 【发布时间】:2020-04-18 08:07:22 【问题描述】:

使用 Mongodb、mongoose、nodejs、express....

我有这样的结构...

const EventSchema = new mongoose.Schema(
  eventDate: 
    type: Date
  ,
  attendees: [
    
      type: mongoose.Schema.ObjectId,
      ref: 'Person'
    
  ],
  staff: [
    
      person: 
        type: mongoose.Schema.ObjectId,
        ref: 'User'
      ,
      department: 
        type: String,
        enum: ['photography', 'data-entry', 'mgmt', 'other']
      
    
  ]
);

我知道如何填充('参加者部门')。这工作正常并返回两者的所有数据。但是,因为我基本上处理的是多个填充,我如何选择应该为与会者和部门检索的特定字段?

【问题讨论】:

请向我们展示您到目前为止所做的尝试。 populate('参加者部门') 亲爱的,请不要在评论部分发布您的代码。显示整个代码并提及您想要的字段。 @WebDevGuy2 这可能会有所帮助:How to select specific field in nested populate in mogoose @MianMuhammad 谢谢,但我正在尝试在 MULTIPLE 填充中选择特定字段 【参考方案1】:

您可以按如下方式编写查询,以填充多个值并仅返回您需要的特定字段

Event.find().populate([
    path: 'attendees',
    model: 'Person',
    select: '_id name profile_pic' //Fields you want to return in this populate
, 
    path: 'staff.person',
    model: 'User',
    select: '_id name profile_pic' //Fields you want to return in this populate
])

【讨论】:

以上是关于填充多个参考(子文档)并选择特定字段的主要内容,如果未能解决你的问题,请参考以下文章

查询子文档并从中选择过滤后的数据 Mongoose

通过选择一个字段自动完成(自动填充)多个字段

如果未填充所有字段,如何选择字段集、展开以及更改类?

UIPickerview 多个文本字段 Xcode

选择特定选项后显示隐藏字段

jQuery自动完成,通过选择建议选项填充多个字段