我应该为mongodb中的不同用户设置不同的集合吗?

时间:2017-09-14 05:15:48

标签: mongodb database-design architecture database

我是数据库和mongo的新手。我正在创建一个Web应用程序,它具有不同类型的用户,可以通过不同的UI访问不同的路径。例如:用户,公司,管理员。我的问题是,我应该创建一个容纳所有用户的单个集合,并在每个User对象上添加“用户类型”或“访问级别”作为属性吗?或者我应该有3个不同的集合,每种类型的用户一个?

此类事情的常见做法是什么?

2 个答案:

答案 0 :(得分:2)

每种类型的用户会有哪些字段?如果它们相同,请使用用户类型选项。相同的用户明天可以担任多个角色。存储在同一个集合中会更好。

如果要存储的字段完全不同,并且同一用户在您的应用程序中无法同时处于2个角色,请使用3个集合。

答案 1 :(得分:0)

根据您的问题,您的架构可以将角色设置为 ENUM ,值为user, company, admin.,并且在将数据保存到db时应相应地设置角色

    var UserSchema = new Schema({
    first_name: {
        type: String,
        required: true
    },

    last_name: {
        type: String
    }, Roles: {
        type: String,
        enum: ['USER', 'COMPANY', 'ADMIN'],
        default: 'ACTIVE'
    }
});
UserSchema.index({
    username: 1,
    role: 1
});