我有以下(简化)架构
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,而且我发现这个功能似乎得到了支持,但它并没有填充。
编辑:仅当返回的文档是所有日期活动时才填充。如果有一个事件活动,则它不会填充任何文档