我正在寻找关于我正在考虑的MongoDB架构的一些建议。我很想得到一些评论和可能的更正。这将适用于有帐户的登录系统,但每个帐户可以有多个用户/管理员。每个用户都有他/她自己的登录,但我想将所有内容嵌入到帐户文档中。每个帐户的用户数不会超过10个(我想如果必须有100个用户,那么性能仍然不会受到影响)。这是典型文档的样子。
{
id: ObjectId(),
modified: date,
users: {
user@domain.com:{
password: hash
}
}
}
我不确定是否可以为用户创建类似的子文档,以及通过查找用户的电子邮件和密码来获取帐户信息是否有效。
仍在阅读架构设计,但欢迎任何反馈。
答案 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作为示例定义。