填充Mongoose数组子文档

时间:2017-01-22 04:28:18

标签: mongoose

我有两个模式 - 匹配和成员。匹配包含一组成员。

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未填充firstNamelastName

我相信我已经尝试了所有群体语法的组合/选项。有任何想法吗?

1 个答案:

答案 0 :(得分:0)

你正走在正确的道路上但在填充中犯了一个错误。

您应该填充players.player而不是嵌套人口(在其中填充playersplayer)。 players不是引用,而是数组,而players.player是引用,这就是您的方法无效的原因。

试试这个:

.Populate('players.player')

这应该适合你。