【问题标题】:Mongoose: Populating without ref in parent猫鼬:在父项中填充没有参考
【发布时间】:2014-11-01 11:39:27
【问题描述】:

在我的 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(...);

最近我意识到,像故事这样的不断增长的数组会降低 huge 数组的性能。所以我想改变这一点,因为在我的情况下,数组增长得非常快并且变得很大。我的解决方案似乎很简单。我将人员架构更改为

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

只有 StorySchema 持有 ref。

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

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案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;
            ...
        })
    })
    

    希望这可能会有所帮助。

    【讨论】:

    • @user1189762 这有帮助吗?
    • 是的,但是无法按脚本长度等进行排序或过滤...
    【解决方案2】:

    看看新功能“Populate Virtuals”,它会让你的生活更轻松

    【讨论】:

      猜你喜欢
      • 2013-01-15
      • 2017-09-13
      • 2015-01-13
      • 1970-01-01
      • 2020-11-19
      • 1970-01-01
      • 2020-07-25
      • 2020-11-30
      • 1970-01-01
      相关资源
      最近更新 更多