【问题标题】:Link deep into Mongoose schema深入链接到 Mongoose 模式
【发布时间】:2016-01-28 18:16:19
【问题描述】:

我想将 Person 链接到 Divisions 中的细分。

Divisions = new Schema({
  division_name: String
  subdivisions: [{
     subdivisions_name: String 
  }]
})

People = new Schema({
  name: String,
  subdivision: *???*
})

查看存储的文档,细分有一个_id,所以我认为这是可能的。

需要明确的是,我有许多不同深度的文档,并且许多文档可能链接到任何给定的文档,因此它不像上面的模式那么简单,但如果有人可以证明这一点,我可以将其调整为我的模型。

在不将 Divisions 拆分为多个模式的情况下这样做是更可取的。

【问题讨论】:

    标签: mongoose schema


    【解决方案1】:

    通常这将通过填充来实现。

    var subdivisionSchema = new Schema({
      name: String
    });
    
    var divisionSchema = new Schema({
      division_name: String
      subdivisions: [subdivisionSchema]
    });
    var peopleSchema = new Schema({
      name: String,
      subdivision: {type: mongoose.Schema.Types.ObjectId, ref: 'Divisions'},
    });
    
    // Connect to DB and instantiate models    
    var db = mongoose.connect('enter your database here');
    var People = db.model('People', peopleSchema);
    var Division  = db.model('Division', divisionSchema);
    var Subdivision = db.model('Subdivision', subdivisionSchema);
    
    // Find and populate
    People.find({}).populate('subdivisions.name').exec(function(err, items) {
        console.log(peoples[0].divisions[0].subdivisions.name);
    });
    

    【讨论】:

    • 那么,如果我有 100 个人从事该细分市场,我如何获得这 100 个人?我想我很困惑它如何知道将“细分”属性链接到“细分”集合_id。
    • 看看原始文档:mongoosejs.com/docs/populate.html向下滚动查询条件和其他选项
    猜你喜欢
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 2016-03-18
    • 2016-06-17
    相关资源
    最近更新 更多