猫鼬Populate - 数组

时间:2014-03-14 01:22:23

标签: node.js mongodb mongoose mongoose-populate

有人可以帮我解决这种模式的问题吗?我需要通过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);
});

1 个答案:

答案 0 :(得分:0)

Polpulation旨在作为"从集合中的相关模型中提取" 信息的方法。因此,而不是直接指定相关字段"而不是引用相关字段,以便文档出现以包含所有这些子文档嵌入在响应中:

Places.findOne({'_id' : placeId}).populate('staff','_id')
    .exec(function(err, doc){
    console.log(doc);
});

第二个参数只返回您想要的字段。所以它"过滤"回应。

文档中有关于populate的更多信息。