具有多个用户的帐户的MongoDB / Mongoose架构

时间:2013-11-26 12:00:17

标签: mongodb mongoose database-schema

我正在寻找关于我正在考虑的MongoDB架构的一些建议。我很想得到一些评论和可能的更正。这将适用于有帐户的登录系统,但每个帐户可以有多个用户/管理员。每个用户都有他/她自己的登录,但我想将所有内容嵌入到帐户文档中。每个帐户的用户数不会超过10个(我想如果必须有100个用户,那么性能仍然不会受到影响)。这是典型文档的样子。

{
    id: ObjectId(),
    modified: date,
    users: {
        user@domain.com:{
            password: hash
        }
    }
}

我不确定是否可以为用户创建类似的子文档,以及通过查找用户的电子邮件和密码来获取帐户信息是否有效。

仍在阅读架构设计,但欢迎任何反馈。

1 个答案:

答案 0 :(得分:0)

对于这种情况,我更喜欢嵌入而不是链接。您的方案非常适合嵌入。我会创建2个模型。其中一个是帐户,另一个是用户。分别定义用户模型的原因是定义用户模型行为。假设您正在将用户添加到具有注册表单的指定帐户。发布表单时,可以直接将表单正文值转换为用户模型并将其嵌入到帐户模型中。我创建了像;

这样的模型
Account = new Schema({
    users:{
        type:[User],
        required:true
    },
    modified:{
        type:String,
        required:false
    }
});

User = new Schema({
    name:{
        type:String,
        required:true
    },
    email:{
        type:String,
        required:true
    },
    password:{
        type:String,
        required:true
    }
});

您还可以查看gist here作为示例定义。