Mongoose-如何引用embedded文档元素?

我有users.js模式与embedded式文档数组宠物。 对于每个用户,一个用户可以有多个宠物(通常不会超过3个,我会认为)。

每只宠物都会有一个日常图表。 所以这是一个宠物的日常图表。 我已经阅读embedded式文件,每个数组元素被索引。 在daily.js中,如何引用它将属于populate()函数的宠物?

var mongoose = require('mongoose'); var Schema = mongoose.Schema; var userSchema = new Schema({ firstName: { type: String, required: true }, lastName: { type: String, required: true }, username: { type: String, required: true, unique: true }, location: String, pets: [{ name: 'string', animalType: 'string'}], //could have more than one pet created_at: Date, updated_at: Date }); 

 var mongoose = require('mongoose'); var Schema = mongoose.Schema; var dailySchema = new Schema({ tite: String, _pet: { type: Number, ref: 'User.pet' }, // not sure how to reference name in user.pets[#] array created_at: Date, updated_at: Date }); 

引用

对不起,令人失望,但这是一个反模式。 填充不能从另一个集合的subdocs填充 – 你得到这个错误的原因是没有模板。

所以参考embedded式文档可能不太好。 将petUser分开作为一个模式可能会更好

 var PetSchema = new Schema ({ name: 'string', animalType: 'string' }); 

UserSchemaDailySchema

 var userSchema = new Schema({ ... pets: [{ type: Schema.Types.ObjectId, ref: 'Pet' }], //could have more than one pet }); var dailySchema = new Schema({ _pet: { type: Number, ref: 'Pet' }, // not sure how to reference name in user.pets[#] array });