哪种方法更好?

问题描述 投票:0回答:1

我想创建一个用户评级的集合,我怀疑2个结构模式。

第一个架构:

var Rating = new mongoose.Schema({
userID: {
    type: String,
    minlength: 1,
    required: true,
    trim: true
},
ratings: [{
    rate: {
        type: Number
    }
  }]
});

第二个架构:

var Rating = new mongoose.Schema({
userID: {
    type: String,
    required: true,
},
rating: {
    type: Number,
    required: true
 }, 
});

第一个模式将导致每个评级被推入评级数组,第二个模式将导致插入相同用户ID的多个文档,并且每个文档包含其评级。

我想知道两者之间建议采用哪种方法,每次用户获得评级时增加数组或增加文档。

mongodb mongoose
1个回答
1
投票

这取决于你的项目的细节(没有一个超级好的和通用的架构)。

第一个结构更接近MongoDB意识形态。但是不要忘记文档大小限制(16MB,除非您使用GridFS)。如果您没有大量信息(ratings字段中的项目),则此结构更好。因为所有评级都在一个文档中,这意味着您的索引将是最佳的(一个用户 - 一个文档)。

当您有大量评级(与文档大小限制相关)时,第二个模式更适合于这种情况。

您也可以使用两个集合。一个用于聚合数据(计算后的最终结果,如缓存),另一个用于详细信息。如前所述 - 最佳解决方案取决于项目的细节

我建议你阅读这篇文章qazxsw poi

© www.soinside.com 2019 - 2024. All rights reserved.