有人可以帮我解决这种模式的问题吗?我需要通过userId填充Staff数组。
var PlaceSchema = new Schema ({
name: { type: String, required: true, trim: true },
permalink: { type: String },
country: { type: String, required: true },
...long story :D...
staff: [staffSchema],
admins: [adminSchema],
masterPlace:{ type: Boolean },
images: []
});
var staffSchema = new Schema ({
userId: { type: Schema.Types.ObjectId, ref: 'Account' },
role: { type: Number }
});
var adminSchema = new Schema ({
userId: { type: Schema.Types.ObjectId, ref: 'Account'}
})
var Places = mongoose.model('Places', PlaceSchema);
我尝试使用此查询,但没有成功。
Places.findOne({'_id' : placeId}).populate('staff.userId').exec(function(err, doc){
console.log(doc);
});
答案 0 :(得分:0)
Polpulation旨在作为"从集合中的相关模型中提取" 信息的方法。因此,而不是直接指定相关字段"而不是引用相关字段,以便文档出现以包含所有这些子文档嵌入在响应中:
Places.findOne({'_id' : placeId}).populate('staff','_id')
.exec(function(err, doc){
console.log(doc);
});
第二个参数只返回您想要的字段。所以它"过滤"回应。
文档中有关于populate的更多信息。