В документации MongoDB предлагается разместить как можно больше данных в одном документе. Также предлагается НЕ использовать вложенные документы на основе ObjectId ref , если на данные этих вложенных документов не нужно ссылаться из более чем одного документа.
В моем случае у меня есть отношение один ко многим , подобное этому:
Журнал схема:
const model = (mongoose) => {
const LogSchema = new mongoose.Schema({
result: { type: String, required: true },
operation: { type: Date, required: true },
x: { type: Number, required: true },
y: { type: Number, required: true },
z: { type: Number, required: true }
});
const model = mongoose.model("Log", LogSchema);
return model;
};
Машина схема:
const model = (mongoose) => {
const MachineSchema = new mongoose.Schema({
model: { type: String, required: true },
description: { type: String, required: true },
logs: [ mongoose.model("Log").schema ]
});
const model = mongoose.model("Machine", MachineSchema);
return model;
};
module.exports = model;
Каждый Машина будет иметь много Production_Log документов (более одного миллиона). Используя встроенные документы, я очень быстро набрал ограничение в 16 МБ на документ во время своих тестов и не смог добавить больше документов Production_Log в документы Machine .
Мои сомнения
Это тот случай, когда следует использовать поддокументы в качестве ObjectId ссылок вместо встроенных документов?
Есть ли какое-либо другое решение, которое я мог бы оценить?
Я буду получать доступ к Production_Log документам для создания статистики для каждой Машины используя структуру агрегации. Должен ли я иметь какие-либо дополнительные соображения по поводу дизайна схемы?
Заранее большое спасибо за ваш совет!