深入链接到Mongoose模式

时间:2015-10-28 19:38:28

标签: mongoose schema

我想将Person链接到Divisions内的一个细分。

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

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

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

要说清楚,我有许多不同深度的文档,很多文档可能链接到任何给定的文档,所以它不像上面的模式那么简单,但如果有人可以证明这一点,我可以根据我的模型进行调整。

在不将Divisions拆分为多个模式的情况下这样做会更受欢迎。

1 个答案:

答案 0 :(得分: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);
});