针对多个身份验证用户帐户的MongoDB设计



我有一个带有nodeJS、Express和MongoDB/mongoose的后端。。。

我的用户可以使用谷歌或电子邮件和密码注册/登录。但现在我的问题是,建立一个模型的最佳选择是什么。

我的第一个选择是:

{
firstname: myname,
lastname: mylastname',
email: 'email@example.com',
accounts: [
{ provider: google,
idGoogle: myid, 
},
{ provider: simple,
email: my@email.com,
password: myp4ssw0rd
}
]
}

或:

{
firstname: myname,
lastname: mylastname',
email: 'email@example.com',
accounts: [
{ id: q1w2e3,provider:google},
{ id: r4t5y5, provider:simple},
]
}

以及对另一个集合的引用

{
_id:q1w2e3,
provider:google
idGoogle:wqwqe24},
{
id: r4t5y5, 
provider:simple,
email:my@email.com
password: myp4ssw0rd
}

我的主要目标是优化性能与许多用户

我不会使用单独的集合和查找。MongoDB将在没有太多开销的情况下管理嵌入的文档。如果它开始退化,只需添加一个索引。

嵌入式文档查询的简单性超过了任何开销。

最新更新