遵循Mongodb模型的最佳建模方法是什么

时间:2019-01-12 05:36:57

标签: node.js mongodb mongoose mongoose-schema mongoose-populate

我有2个这样的模型

const testRunSchema = new mongoose.Schema({
    testTimeSlot: {
        type: String,
        required: true
    },
    testDate: {
        type: String,
        required: true
    },
    diagnosticData: [Object],
    notes: String,
    active: {
        type: Boolean,
        default: true
    }
}, {
    timestamps: true,
    strict: false
})

const testingSchema = new mongoose.Schema({
    testId: {
        type: mongoose.Schema.ObjectId,
        required: true
    },

    testDetails: {
        //dummy data
    },
    contactDetails: {
        //dummy data
    },
    testRunDetails: [testRunSchema], //is this a best way?
    runByAssistant: Boolean
}, {
    timestamps: true
});

module.exports = mongoose.model('Testing', testingSchema)

现在,我想使用第二个模型的testTimeSlot访问testId(这是第一个模型)。

我的解决方案:

我可以使用testimeSlot访问第一个模型的testId,因为在seconf模型的testRunDetails中可以使用第一个模型的数据。

解决此问题的方法:

由于testRunSchema在第二个模型中被定义为数组,因此访问每个数组元素的testTimeSlot并不容易且有效。

解决此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您认为正确的是,除了填充数组越多,查询就越慢,访问它们并不容易。因此,最好将testRunSchema分开并将其数据引用保存到testingSchema

var doc = new jsPDF();
doc.text(20, 20, 'Hello world!');
doc.text(20, 30, 'This is client-side Javascript, pumping out a PDF.');
doc.addPage();
doc.text(20, 20, 'Do you like that?');
doc.save('Test.pdf');

当您要查询时,只需要在猫鼬中使用polulate() 您可以在here

中阅读