如何将数组ID引用到另一个集合

时间:2016-10-31 08:46:21

标签: mongodb mongoose mongoose-schema

我有一个集合作为设备,另一个集合作为调度程序。设备包含设备作为数组,现在每个设备都有对象ID,我想在我的新模式中使用它作为参考,名为Schedulers。

这就是我的要求:

var SchedulerSchema = new Schema({ applianceId: {
    type: Schema.ObjectId,
    ref: 'Device.appliances'
});

如果我需要链接设备字段,这是我的设备集合中的数组,那么应该是什么。

1 个答案:

答案 0 :(得分:0)

关于如何引用的一个小例子。

填充是使用其他集合中的文档自动替换文档中指定路径的过程。我们可以填充单个文档,多个文档,普通对象,多个普通对象或从查询返回的所有对象。我们来看一些例子。

var mongoose = require('mongoose')
  , Schema = mongoose.Schema

var personSchema = Schema({
  _id     : Number,
  name    : String,
  age     : Number,
  stories : [{ type: Schema.Types.ObjectId, ref: 'Story' }]
});

var storySchema = Schema({
  _creator : { type: Number, ref: 'Person' },
  title    : String,
  fans     : [{ type: Number, ref: 'Person' }]
});

var Story  = mongoose.model('Story', storySchema);
var Person = mongoose.model('Person', personSchema);

到目前为止,我们已经创建了两个模型。我们的Person模型将其story字段设置为ObjectIds数组。 ref选项告诉Mongoose在填充期间使用哪种模型,在我们的例子中是Story模型。我们在这里存储的所有_ids必须是Story模型中的文档_ids。我们还将Story _creator属性声明为Number,与personSchema中使用的_id相同。将_id的类型与ref的类型相匹配非常重要。

注意: ObjectId,Number,String和Buffer可用作refs。

浏览该链接以获取更多信息:http://mongoosejs.com/docs/populate.html