mongoose:填充没有参考父母

在我的node.js + mongoose应用程序中,我有一个父对象和一个对象相互引用的子对象:

var PersonSchema = new Schema({ name : String , age : Number , stories : [{ type: Schema.ObjectId, ref: 'Story' }] }); var StorySchema = new Schema({ _creator : { type: Schema.ObjectId, ref: 'Person' } , title : String , fans : [{ type: Schema.ObjectId, ref: 'Person' }] }); 

现在我可以通过以下方式填充所有的故事:

 Person.findOne({ name: "some name"}).populate('stories').exec(...); 

最近,我意识到,像故事一样,不断增长的arrays会减慢阵的性能。 所以我想改变这一点,因为在我的情况下,arrays正在快速增长,变得巨大。 我的解决scheme似乎很容易。 我改变了人的模式

 var PersonSchema = new Schema({ name : String , age : Number }); 

只有StorySchema拥有参考。

现在的问题:是否有办法或解决方法来填充我的人的故事?

你总是可以这样做:

 var Script = mongoose.model('Script'); Person.findOne({ name: "some name" }, function(err, person) { Script.find({ _creator: person._id }, function(err, scripts) { person.scripts = scripts; ... }) }) 

希望可以帮助。

看看新的function“填充虚拟”,它会让你的生活更轻松