我设计了一个mongodb模式,一个计划有多个里程碑,每个里程碑有多个任务,每个任务都与一个外部任务文档相关联。这是我在 mongoose 中实现的 mongodb 架构设计
var PlanSchema = new mongoose.Schema({
plan:[ Milestone ]
});
var Milestone = mongoose.Schema({
goal:String,
tasks: [
{ type: ObjectId, ref: 'Task' }
]
});
现在的目标是在一个计划中找到某个里程碑的所有任务,
PlanModel
.findOne({'_id':pid },
{
'plan':{ $slice: [ milestone_number, 1 ] },
'plan.tasks':1,'plan.goal':1
}, function(err, doc){
if(err){ callback(err, null); }
else {
callback(null, doc);
}
});
它有效,但显然检索到的任务只是一个Task ObjectID的数组,我想要的是任务文档,所以我尝试了填充方法
PlanModel
.findOne({'_id':pid },
{
'plan':{ $slice: [ number, 1 ] },
'plan.tasks':1,'plan.goal':1
})
.populate('Task', 'task_description ')
.exec( function(err, doc){
if(err){callback(err, null);}
else {
callback(null, doc);
}
})
但我得到的仍然是Task ObjectID 的数组,而不是Task 文档的数组。猫鼬中的填充方法有什么问题吗?