如何在mongo db中引用集合?

时间:2016-06-07 10:22:23

标签: node.js mongodb mongoose

我是Mongo数据库的新手,

我在我的项目中使用node.js mongoose库。我的要求是

我有两个系列。 1.服务2.包

  1. services仅包含一个值,即service_name
  2. 包含3个值1. package_name(字符串),2。服务数组(第一个集合服务的数组),3。持续时间(时间)
  3. 从上面两个集合中,第一个Collection Services包含100个文档,当将文档插入第二个集合Packages时,第二个值应该引用第一个集合。

    我想从包集合中引用服务集合?

    module.exports = mongoose.model('Package', new Schema({
        packageName:   { type: String, unique: true },
        services: {id:{type: Schema.Types.ObjectId,
            ref: 'service'}}, // Am I doing wrong here?
        duration: { type: Date, default: Date.now}
    }));
    
    module.exports = mongoose.model('Service', new Schema({
       service:   { type: String, unique: true }
    }));
    

    任何人都可以请我提供正确的方法来定义模型并访问它们吗?

2 个答案:

答案 0 :(得分:0)

试试这个,这是以mongoose

设计架构的正确方法
module.exports = mongoose.model('Service', new Schema({
   service:   { type: String, unique: true }
}));

您的包裹模型

module.exports = mongoose.model('Package', new Schema({
    packageName:   { type: String, unique: true },
    services: [{type: Schema.Types.ObjectId,ref: 'service'}], // Array of service
    duration: { type: Date, default: Date.now}
}));

另一种方式

module.exports = mongoose.model('Package', new Schema({
        packageName:   { type: String, unique: true },
        services: [{serviceId:{type: Schema.Types.ObjectId,ref: 'service'}}], // Array of service
        duration: { type: Date, default: Date.now}
    }));

答案 1 :(得分:0)

第一个设计服务架构

var serviceSchema = new mongoose.Schema({
     service:   { type: String, unique: true }
});

然后设计包maodel

module.exports = mongoose.model('Package', new Schema({
    packageName:   { type: String, unique: true },
    services: [serviceSchema], // Array of service object
    duration: { type: Date, default: Date.now}
}));