我有以下(简化)架构

var options = {discriminatorKey:'kind'};

var activitySchema = new Schema(
  {  
    title:{type:String}
  },options
);

var Activity = mongoose.model('Activity', activitySchema);

var dateActivitySchema = new Schema({
  postedBy:{type:Schema.Types.ObjectId,ref:'User',required:true}
},options);

var eventActivitySchema = new Schema({
  details:{
    eventType:{type:String, enum:['mixed','women','men']}
  }
},options);

我有一个函数,它返回两个子文档的混合 - 日期活动和事件活动 . 但是,当我尝试填充postedBy字段时,它不会按预期填充数据 .

Activity.aggregate([
    {
      $match:{
        $or:[{
          postedBy:{$in:results[0].userIDs}
        },
        {
          'details.eventType':eventGenderInterestedInMapper(user.gender,user.preferences.interestedInGenders),
          kind:'Event'
        }]
      }
    }
  ],function(err,results){
    Activity.populate(results,{path:'postedBy'},function(err,results){
      if (err) return cb(err,null);
      return cb(null,results);
    });
  });

我可以用任何方式从基本模式调用填充此子字段,还是必须在基础模式中包含该字段?我正在使用最新版本的mongoose,而且我发现这个功能似乎得到了支持,但它并没有填充 .

编辑:仅当返回的文档是所有日期活动时才填充 . 如果有一个事件活动,则它不会填充任何文档