我有两个模式 - 匹配和成员。匹配包含一组成员。
var MatchSchema = new Schema({name: String, players: [{
player: {
type: Schema.ObjectId,
ref: 'Member'},
play: Boolean}]});
var MemberSchema = new Schema({
firstName: String,
lastName: String});
我正在尝试使用http://mongoosejs.com/docs/populate.html
填充ObjectIds.populate({
path: 'players',
populate: {path: 'player'}
})
根据Mongoose调试,matches.find查询返回两个预期的Member ObjectIds,...
Mongoose: matches.findOne({ _id: ObjectId("5883a57362f0ca10945b305a") }, { fields: undefined })
Mongoose: matches.find({ _id: { '$in': [ ObjectId("58502d28e88746467d48b424"), ObjectId("583c82ef5274831a5443fa53")] } }, { fields: undefined })
但match.players.player
未填充firstName
或lastName
。
我相信我已经尝试了所有群体语法的组合/选项。有任何想法吗?
答案 0 :(得分:0)
你正走在正确的道路上但在填充中犯了一个错误。
您应该填充players.player
而不是嵌套人口(在其中填充players
和player
)。 players
不是引用,而是数组,而players.player
是引用,这就是您的方法无效的原因。
试试这个:
.Populate('players.player')
这应该适合你。