Vaderico
Vaderico

Reputation: 648

Should I have different collections for different users in mongodb?

Im new to databases and mongo. I'm creating a web app that has different types of users that have access to different routes via different UI's. eg: user, company, admin. My question is should I create a single collection that houses all users and simple add a "user-type" or "access-level" as a property on each User object? or should I have 3 different Collections, one for each type of user?

What is common practice for this type of thing?

Upvotes: 2

Views: 3053

Answers (2)

Amit Kumar Singh
Amit Kumar Singh

Reputation: 4475

What would be fields for each type of user? If they are same, use user type option. Same user can be in multiple roles tomorrow. Storing in same collection would be better.

If the fields to be stored are completely different, and there is not a chance that same user can be in 2 roles ever in your application, use 3 collections.

Upvotes: 5

Vignesh
Vignesh

Reputation: 1212

By your question your Schema can have Roles set as ENUM and value as user, company, admin. and role should be accordingly set while you save the data to 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
});

Upvotes: 0

Related Questions