填充Mongoose中子模式的聚合结果

时间:2016-02-12 11:45:25

标签: node.js mongodb mongoose aggregation-framework mongoose-populate

我有以下(简化)架构

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,而且我发现这个功能似乎得到了支持,但它并没有填充。

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

0 个答案:

没有答案