Mongo - 1到多个 - 数据库建模

时间:2018-01-17 11:06:26

标签: mongodb

我正在使用mongodb。我的模型是工厂,风格,流程

Style有工厂

流程有一种风格

所以它是工厂与风格,风格和流程之间的一对多关系

流程模型

name:{
    type: String,
    required: true,
},
style: {type:Schema.Types.ObjectId,ref:'Style'}

样式模型

code:{
    type: String,
    required: true,
    unique: true
},
factory: {type:Schema.Types.ObjectId,ref:'Factory'},

问题是当他们的文档很多时,1000factory - > styles->进程

查找特定工厂的样式将花费大量时间,对于特定样式的流程也是如此

所以最好为它的流程添加一个样式的ref数组,并为工厂添加一个样式的ref数组呢?

如果是这样,我应该删除样式参考过程还是可以离开?

会影响存储空间吗?还是表现呢?

1 个答案:

答案 0 :(得分:3)

  • 首先,是的,它会影响性能问题,因为在一个地方,如果您通过查找一个样式文档和其他地方放入数组,您将获得工厂的所有ID'样式标识为5q1q1q2q21q2q12q1的工厂(示例)。

所以它将转到所有相同的样式id并获得所有工厂和其他方面你只需获得一个样式模型并通过填充(mongoose)或查找(获取所有工厂)您选择的MongoDB Aggregate。

  • 其次,在模型中保存Ref中的参数显然会增加很少的内存,因为在另一方面只保存一个参考