在我的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(...);
最近我意识到,像故事那样不断增长的数组会降低巨大数组的性能。所以我想改变它,因为在我的情况下,阵列增长非常快并且变得巨大。我的解决方案似乎很容易。我将人员架构更改为
var PersonSchema = new Schema({
name : String
, age : Number
});
只有StorySchema持有裁判。
现在的问题是:有没有办法或解决方法来填充我个人的故事?
答案 0 :(得分:1)
你总是可以这样做:
var Script = mongoose.model('Script');
Person.findOne({ name: "some name" }, function(err, person) {
Script.find({ _creator: person._id }, function(err, scripts) {
person.scripts = scripts;
...
})
})
希望这可能会有所帮助。
答案 1 :(得分:0)
查看新功能"填充虚拟广告",它将让您的生活更轻松